primer_view_components 0.51.4 → 0.51.6

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 (99) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/app/assets/javascripts/primer_view_components.js +1 -1
  4. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  5. data/app/assets/styles/primer_view_components.css +1 -1
  6. data/app/assets/styles/primer_view_components.css.map +1 -1
  7. data/app/components/primer/alpha/action_bar.css +1 -1
  8. data/app/components/primer/alpha/action_bar.css.map +1 -1
  9. data/app/components/primer/alpha/action_list.css +1 -1
  10. data/app/components/primer/alpha/action_list.css.json +4 -10
  11. data/app/components/primer/alpha/action_list.css.map +1 -1
  12. data/app/components/primer/alpha/auto_complete.css +1 -1
  13. data/app/components/primer/alpha/auto_complete.css.map +1 -1
  14. data/app/components/primer/alpha/banner.css +1 -1
  15. data/app/components/primer/alpha/banner.css.map +1 -1
  16. data/app/components/primer/alpha/button_marketing.css +1 -1
  17. data/app/components/primer/alpha/button_marketing.css.map +1 -1
  18. data/app/components/primer/alpha/dialog.css +1 -1
  19. data/app/components/primer/alpha/dialog.css.json +2 -1
  20. data/app/components/primer/alpha/dialog.css.map +1 -1
  21. data/app/components/primer/alpha/dialog.pcss +4 -1
  22. data/app/components/primer/alpha/dropdown.css +1 -1
  23. data/app/components/primer/alpha/dropdown.css.map +1 -1
  24. data/app/components/primer/alpha/dropdown.pcss +8 -12
  25. data/app/components/primer/alpha/layout.css +1 -1
  26. data/app/components/primer/alpha/layout.css.json +10 -14
  27. data/app/components/primer/alpha/layout.css.map +1 -1
  28. data/app/components/primer/alpha/menu.css +1 -1
  29. data/app/components/primer/alpha/menu.css.map +1 -1
  30. data/app/components/primer/alpha/overlay.css +1 -1
  31. data/app/components/primer/alpha/overlay.css.map +1 -1
  32. data/app/components/primer/alpha/segmented_control.css +1 -1
  33. data/app/components/primer/alpha/segmented_control.css.json +1 -2
  34. data/app/components/primer/alpha/segmented_control.css.map +1 -1
  35. data/app/components/primer/alpha/select_panel.css +1 -1
  36. data/app/components/primer/alpha/select_panel.css.map +1 -1
  37. data/app/components/primer/alpha/skeleton_box.css +1 -1
  38. data/app/components/primer/alpha/skeleton_box.css.map +1 -1
  39. data/app/components/primer/alpha/stack.css +1 -1
  40. data/app/components/primer/alpha/stack.css.map +1 -1
  41. data/app/components/primer/alpha/tab_nav.css +1 -1
  42. data/app/components/primer/alpha/tab_nav.css.map +1 -1
  43. data/app/components/primer/alpha/text_field.css +1 -1
  44. data/app/components/primer/alpha/text_field.css.json +1 -2
  45. data/app/components/primer/alpha/text_field.css.map +1 -1
  46. data/app/components/primer/alpha/toggle_switch.css +1 -1
  47. data/app/components/primer/alpha/toggle_switch.css.map +1 -1
  48. data/app/components/primer/alpha/tree_view/sub_tree_node.rb +1 -1
  49. data/app/components/primer/alpha/tree_view/visual.rb +1 -1
  50. data/app/components/primer/alpha/tree_view.css +1 -1
  51. data/app/components/primer/alpha/tree_view.css.json +1 -2
  52. data/app/components/primer/alpha/tree_view.css.map +1 -1
  53. data/app/components/primer/alpha/underline_nav.css +1 -1
  54. data/app/components/primer/alpha/underline_nav.css.map +1 -1
  55. data/app/components/primer/beta/avatar.css +1 -1
  56. data/app/components/primer/beta/avatar.css.map +1 -1
  57. data/app/components/primer/beta/avatar_stack.css +1 -1
  58. data/app/components/primer/beta/avatar_stack.css.map +1 -1
  59. data/app/components/primer/beta/blankslate.css +1 -1
  60. data/app/components/primer/beta/blankslate.css.map +1 -1
  61. data/app/components/primer/beta/border_box.css +1 -1
  62. data/app/components/primer/beta/border_box.css.map +1 -1
  63. data/app/components/primer/beta/breadcrumbs.css +1 -1
  64. data/app/components/primer/beta/breadcrumbs.css.map +1 -1
  65. data/app/components/primer/beta/button.css +1 -1
  66. data/app/components/primer/beta/button.css.map +1 -1
  67. data/app/components/primer/beta/button_group.css +1 -1
  68. data/app/components/primer/beta/button_group.css.map +1 -1
  69. data/app/components/primer/beta/button_group.rb +1 -1
  70. data/app/components/primer/beta/counter.css +1 -1
  71. data/app/components/primer/beta/counter.css.map +1 -1
  72. data/app/components/primer/beta/flash.css +1 -1
  73. data/app/components/primer/beta/flash.css.map +1 -1
  74. data/app/components/primer/beta/label.css +1 -1
  75. data/app/components/primer/beta/label.css.map +1 -1
  76. data/app/components/primer/beta/link.css +1 -1
  77. data/app/components/primer/beta/link.css.map +1 -1
  78. data/app/components/primer/beta/popover.css +1 -1
  79. data/app/components/primer/beta/popover.css.map +1 -1
  80. data/app/components/primer/beta/progress_bar.css +1 -1
  81. data/app/components/primer/beta/progress_bar.css.map +1 -1
  82. data/app/components/primer/beta/state.css +1 -1
  83. data/app/components/primer/beta/state.css.map +1 -1
  84. data/app/components/primer/beta/subhead.css +1 -1
  85. data/app/components/primer/beta/subhead.css.map +1 -1
  86. data/app/components/primer/beta/timeline_item.css +1 -1
  87. data/app/components/primer/beta/timeline_item.css.map +1 -1
  88. data/app/components/primer/beta/truncate.css +1 -1
  89. data/app/components/primer/beta/truncate.css.map +1 -1
  90. data/app/components/primer/dialog_helper.js +10 -1
  91. data/app/components/primer/dialog_helper.ts +16 -1
  92. data/app/lib/primer/forms/acts_as_component.rb +1 -1
  93. data/app/lib/primer/forms/toggle_switch_form.rb +1 -1
  94. data/lib/primer/form_components.rb +1 -1
  95. data/lib/primer/view_components/version.rb +1 -1
  96. data/previews/primer/alpha/dropdown_preview.rb +12 -0
  97. data/static/info_arch.json +6 -6
  98. data/static/previews.json +6 -6
  99. metadata +2 -2
@@ -1 +1 @@
1
- .TimelineItem{display:flex;margin-left:var(--stack-gap-normal);padding:var(--stack-padding-normal) 0;position:relative}.TimelineItem:before{background-color:var(--borderColor-muted);bottom:0;content:"";display:block;left:0;position:absolute;top:0;width:var(--borderWidth-thick)}.TimelineItem:target .TimelineItem-badge{border-color:var(--borderColor-accent-emphasis);box-shadow:0 0 .2em var(--borderColor-accent-muted)}.TimelineItem-badge{align-items:center;background-color:var(--timelineBadge-bgColor);border:var(--borderWidth-thick) solid var(--bgColor-default);border-radius:50%;color:var(--fgColor-muted);display:flex;flex-shrink:0;height:var(--control-medium-size);justify-content:center;margin-left:calc(var(--control-medium-size)/-2 + 1px);margin-right:var(--controlStack-medium-gap-condensed);position:relative;width:var(--control-medium-size);z-index:1}.TimelineItem-badge--success{background-color:var(--bgColor-success-emphasis);border:var(--borderWidth-thin) solid #0000;color:var(--fgColor-onEmphasis)}.TimelineItem-body{color:var(--fgColor-muted);flex:auto;margin-top:calc(var(--base-size-4) + 1px);max-width:100%;min-width:0}.TimelineItem-avatar{left:-72px;position:absolute;z-index:1}.TimelineItem-break{background-color:var(--bgColor-default);border:0;border-top:var(--borderWidth-thicker) solid var(--borderColor-default);height:var(--stack-gap-spacious);margin:0;margin-bottom:calc(var(--stack-gap-normal)*-1);margin-left:-56px;position:relative;z-index:1}.TimelineItem--condensed{padding-bottom:0;padding-top:var(--base-size-4)}.TimelineItem--condensed:last-child{padding-bottom:var(--stack-gap-normal)}.TimelineItem--condensed .TimelineItem-badge{background-color:var(--bgColor-default);border:0;color:var(--fgColor-muted);height:var(--base-size-16);margin-bottom:var(--base-size-8);margin-top:var(--base-size-8)}
1
+ .TimelineItem{position:relative;display:flex;padding:var(--stack-padding-normal) 0;margin-left:var(--stack-gap-normal)}.TimelineItem:before{position:absolute;top:0;bottom:0;left:0;display:block;width:var(--borderWidth-thick);content:"";background-color:var(--borderColor-muted)}.TimelineItem:target .TimelineItem-badge{border-color:var(--borderColor-accent-emphasis);box-shadow:0 0 .2em var(--borderColor-accent-muted)}.TimelineItem-badge{position:relative;z-index:1;display:flex;width:var(--control-medium-size);height:var(--control-medium-size);margin-right:var(--controlStack-medium-gap-condensed);margin-left:calc(var(--control-medium-size)/-2 + 1px);color:var(--fgColor-muted);align-items:center;background-color:var(--timelineBadge-bgColor);border:var(--borderWidth-thick) solid var(--bgColor-default);border-radius:50%;justify-content:center;flex-shrink:0}.TimelineItem-badge--success{color:var(--fgColor-onEmphasis);background-color:var(--bgColor-success-emphasis);border:var(--borderWidth-thin) solid #0000}.TimelineItem-body{min-width:0;max-width:100%;margin-top:calc(var(--base-size-4) + 1px);color:var(--fgColor-muted);flex:auto}.TimelineItem-avatar{position:absolute;left:-72px;z-index:1}.TimelineItem-break{position:relative;z-index:1;height:var(--stack-gap-spacious);margin:0;margin-bottom:calc(var(--stack-gap-normal)*-1);margin-left:-56px;background-color:var(--bgColor-default);border:0;border-top:var(--borderWidth-thicker) solid var(--borderColor-default)}.TimelineItem--condensed{padding-top:var(--base-size-4);padding-bottom:0}.TimelineItem--condensed:last-child{padding-bottom:var(--stack-gap-normal)}.TimelineItem--condensed .TimelineItem-badge{height:var(--base-size-16);margin-top:var(--base-size-8);margin-bottom:var(--base-size-8);color:var(--fgColor-muted);background-color:var(--bgColor-default);border:0}
@@ -1 +1 @@
1
- {"version":3,"sources":["timeline_item.pcss"],"names":[],"mappings":"AAEA,cAEE,YAAa,CAIb,mCAAoC,CAFpC,qCAAsC,CAHtC,iBAyBF,CAjBE,qBASE,yCAA0C,CAN1C,QAAS,CAIT,UAAW,CAFX,aAAc,CADd,MAAO,CAHP,iBAAkB,CAClB,KAAM,CAIN,8BAIF,CAEA,yCACE,+CAAgD,CAEhD,mDACF,CAGF,oBAWE,kBAAmB,CACnB,6CAA8C,CAE9C,4DAA6D,CAC7D,iBAAkB,CALlB,0BAA2B,CAP3B,YAAa,CAcb,aAAc,CAZd,iCAAkC,CAWlC,sBAAuB,CAPvB,qDAAwD,CAFxD,qDAAsD,CANtD,iBAAkB,CAGlB,gCAAiC,CAFjC,SAgBF,CAEA,6BAEE,gDAAiD,CACjD,0CAAiD,CAFjD,+BAGF,CAEA,mBAKE,0BAA2B,CAC3B,SAAU,CAFV,yCAA0C,CAF1C,cAAe,CADf,WAMF,CAEA,qBAGE,UAAW,CAFX,iBAAkB,CAGlB,SACF,CAEA,oBASE,uCAAwC,CACxC,QAAS,CACT,sEAAuE,CARvE,gCAAiC,CACjC,QAAS,CAET,8CAAiD,CAEjD,iBAAkB,CAPlB,iBAAkB,CAClB,SAUF,CAEA,yBAEE,gBAAiB,CADjB,8BAiBF,CAbE,oCAEE,sCACF,CAEA,6CAKE,uCAAwC,CACxC,QAAS,CAFT,0BAA2B,CAH3B,0BAA2B,CAE3B,gCAAiC,CADjC,6BAKF","file":"timeline_item.css","sourcesContent":["/* TimelineItem */\n\n.TimelineItem {\n position: relative;\n display: flex;\n /* stylelint-disable-next-line primer/spacing */\n padding: var(--stack-padding-normal) 0;\n /* stylelint-disable-next-line primer/spacing */\n margin-left: var(--stack-gap-normal);\n\n /* The Timeline */\n &::before {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n display: block;\n width: var(--borderWidth-thick);\n content: '';\n /* stylelint-disable-next-line primer/colors */\n background-color: var(--borderColor-muted);\n }\n\n &:target .TimelineItem-badge {\n border-color: var(--borderColor-accent-emphasis);\n /* stylelint-disable-next-line primer/box-shadow */\n box-shadow: 0 0 0.2em var(--borderColor-accent-muted);\n }\n}\n\n.TimelineItem-badge {\n position: relative;\n z-index: 1;\n display: flex;\n width: var(--control-medium-size);\n height: var(--control-medium-size);\n /* stylelint-disable-next-line primer/spacing */\n margin-right: var(--controlStack-medium-gap-condensed);\n /* stylelint-disable-next-line primer/spacing */\n margin-left: calc(var(--control-medium-size) / -2 + 1px);\n color: var(--fgColor-muted);\n align-items: center;\n background-color: var(--timelineBadge-bgColor);\n /* stylelint-disable-next-line primer/colors */\n border: var(--borderWidth-thick) solid var(--bgColor-default);\n border-radius: 50%;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.TimelineItem-badge--success {\n color: var(--fgColor-onEmphasis);\n background-color: var(--bgColor-success-emphasis);\n border: var(--borderWidth-thin) solid transparent;\n}\n\n.TimelineItem-body {\n min-width: 0;\n max-width: 100%;\n /* stylelint-disable-next-line primer/spacing */\n margin-top: calc(var(--base-size-4) + 1px);\n color: var(--fgColor-muted);\n flex: auto;\n}\n\n.TimelineItem-avatar {\n position: absolute;\n /* stylelint-disable-next-line primer/spacing */\n left: -72px;\n z-index: 1;\n}\n\n.TimelineItem-break {\n position: relative;\n z-index: 1;\n height: var(--stack-gap-spacious);\n margin: 0;\n /* stylelint-disable-next-line primer/spacing */\n margin-bottom: calc(var(--stack-gap-normal) * -1);\n /* stylelint-disable-next-line primer/spacing */\n margin-left: -56px;\n background-color: var(--bgColor-default);\n border: 0;\n border-top: var(--borderWidth-thicker) solid var(--borderColor-default);\n}\n\n.TimelineItem--condensed {\n padding-top: var(--base-size-4);\n padding-bottom: 0;\n\n /* TimelineItem--condensed is often grouped. (commits) */\n &:last-child {\n /* stylelint-disable-next-line primer/spacing */\n padding-bottom: var(--stack-gap-normal);\n }\n\n & .TimelineItem-badge {\n height: var(--base-size-16);\n margin-top: var(--base-size-8);\n margin-bottom: var(--base-size-8);\n color: var(--fgColor-muted);\n background-color: var(--bgColor-default);\n border: 0;\n }\n}\n"]}
1
+ {"version":3,"sources":["timeline_item.pcss"],"names":[],"mappings":"AAEA,cACE,iBAAkB,CAClB,YAAa,CAEb,qCAAsC,CAEtC,mCAoBF,CAjBE,qBACE,iBAAkB,CAClB,KAAM,CACN,QAAS,CACT,MAAO,CACP,aAAc,CACd,8BAA+B,CAC/B,UAAW,CAEX,yCACF,CAEA,yCACE,+CAAgD,CAEhD,mDACF,CAGF,oBACE,iBAAkB,CAClB,SAAU,CACV,YAAa,CACb,gCAAiC,CACjC,iCAAkC,CAElC,qDAAsD,CAEtD,qDAAwD,CACxD,0BAA2B,CAC3B,kBAAmB,CACnB,6CAA8C,CAE9C,4DAA6D,CAC7D,iBAAkB,CAClB,sBAAuB,CACvB,aACF,CAEA,6BACE,+BAAgC,CAChC,gDAAiD,CACjD,0CACF,CAEA,mBACE,WAAY,CACZ,cAAe,CAEf,yCAA0C,CAC1C,0BAA2B,CAC3B,SACF,CAEA,qBACE,iBAAkB,CAElB,UAAW,CACX,SACF,CAEA,oBACE,iBAAkB,CAClB,SAAU,CACV,gCAAiC,CACjC,QAAS,CAET,8CAAiD,CAEjD,iBAAkB,CAClB,uCAAwC,CACxC,QAAS,CACT,sEACF,CAEA,yBACE,8BAA+B,CAC/B,gBAgBF,CAbE,oCAEE,sCACF,CAEA,6CACE,0BAA2B,CAC3B,6BAA8B,CAC9B,gCAAiC,CACjC,0BAA2B,CAC3B,uCAAwC,CACxC,QACF","file":"timeline_item.css","sourcesContent":["/* TimelineItem */\n\n.TimelineItem {\n position: relative;\n display: flex;\n /* stylelint-disable-next-line primer/spacing */\n padding: var(--stack-padding-normal) 0;\n /* stylelint-disable-next-line primer/spacing */\n margin-left: var(--stack-gap-normal);\n\n /* The Timeline */\n &::before {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n display: block;\n width: var(--borderWidth-thick);\n content: '';\n /* stylelint-disable-next-line primer/colors */\n background-color: var(--borderColor-muted);\n }\n\n &:target .TimelineItem-badge {\n border-color: var(--borderColor-accent-emphasis);\n /* stylelint-disable-next-line primer/box-shadow */\n box-shadow: 0 0 0.2em var(--borderColor-accent-muted);\n }\n}\n\n.TimelineItem-badge {\n position: relative;\n z-index: 1;\n display: flex;\n width: var(--control-medium-size);\n height: var(--control-medium-size);\n /* stylelint-disable-next-line primer/spacing */\n margin-right: var(--controlStack-medium-gap-condensed);\n /* stylelint-disable-next-line primer/spacing */\n margin-left: calc(var(--control-medium-size) / -2 + 1px);\n color: var(--fgColor-muted);\n align-items: center;\n background-color: var(--timelineBadge-bgColor);\n /* stylelint-disable-next-line primer/colors */\n border: var(--borderWidth-thick) solid var(--bgColor-default);\n border-radius: 50%;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.TimelineItem-badge--success {\n color: var(--fgColor-onEmphasis);\n background-color: var(--bgColor-success-emphasis);\n border: var(--borderWidth-thin) solid transparent;\n}\n\n.TimelineItem-body {\n min-width: 0;\n max-width: 100%;\n /* stylelint-disable-next-line primer/spacing */\n margin-top: calc(var(--base-size-4) + 1px);\n color: var(--fgColor-muted);\n flex: auto;\n}\n\n.TimelineItem-avatar {\n position: absolute;\n /* stylelint-disable-next-line primer/spacing */\n left: -72px;\n z-index: 1;\n}\n\n.TimelineItem-break {\n position: relative;\n z-index: 1;\n height: var(--stack-gap-spacious);\n margin: 0;\n /* stylelint-disable-next-line primer/spacing */\n margin-bottom: calc(var(--stack-gap-normal) * -1);\n /* stylelint-disable-next-line primer/spacing */\n margin-left: -56px;\n background-color: var(--bgColor-default);\n border: 0;\n border-top: var(--borderWidth-thicker) solid var(--borderColor-default);\n}\n\n.TimelineItem--condensed {\n padding-top: var(--base-size-4);\n padding-bottom: 0;\n\n /* TimelineItem--condensed is often grouped. (commits) */\n &:last-child {\n /* stylelint-disable-next-line primer/spacing */\n padding-bottom: var(--stack-gap-normal);\n }\n\n & .TimelineItem-badge {\n height: var(--base-size-16);\n margin-top: var(--base-size-8);\n margin-bottom: var(--base-size-8);\n color: var(--fgColor-muted);\n background-color: var(--bgColor-default);\n border: 0;\n }\n}\n"]}
@@ -1 +1 @@
1
- .Truncate{display:inline-flex;max-width:100%;min-width:0}.Truncate>.Truncate-text{max-width:fit-content;min-width:1ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:is(.Truncate>.Truncate-text)+.Truncate-text{margin-left:var(--control-small-gap)}.Truncate-text--primary:is(.Truncate>.Truncate-text){flex-basis:200%}.Truncate-text--expandable:is(.Truncate>.Truncate-text):active,.Truncate-text--expandable:is(.Truncate>.Truncate-text):focus,.Truncate-text--expandable:is(.Truncate>.Truncate-text):hover{cursor:pointer;flex-shrink:0;max-width:100%!important}
1
+ .Truncate{display:inline-flex;min-width:0;max-width:100%}.Truncate>.Truncate-text{min-width:1ch;max-width:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:is(.Truncate>.Truncate-text)+.Truncate-text{margin-left:var(--control-small-gap)}.Truncate-text--primary:is(.Truncate>.Truncate-text){flex-basis:200%}.Truncate-text--expandable:is(.Truncate>.Truncate-text):active,.Truncate-text--expandable:is(.Truncate>.Truncate-text):focus,.Truncate-text--expandable:is(.Truncate>.Truncate-text):hover{max-width:100%!important;flex-shrink:0;cursor:pointer}
@@ -1 +1 @@
1
- {"version":3,"sources":["truncate.pcss"],"names":[],"mappings":"AAEA,UACE,mBAAoB,CAEpB,cAAe,CADf,WA2BF,CAxBE,yBAEE,qBAAsB,CADtB,aAAc,CAEd,eAAgB,CAChB,sBAAuB,CACvB,kBAkBF,CAhBE,6CAEE,oCACF,CAEA,qDACE,eACF,CAEA,2LAKE,cAAe,CADf,aAAc,CADd,wBAGF","file":"truncate.css","sourcesContent":["/* Truncate */\n\n.Truncate {\n display: inline-flex;\n min-width: 0;\n max-width: 100%;\n\n & > .Truncate-text {\n min-width: 1ch;\n max-width: fit-content;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n & + .Truncate-text {\n /* stylelint-disable-next-line primer/spacing */\n margin-left: var(--control-small-gap);\n }\n\n &.Truncate-text--primary {\n flex-basis: 200%;\n }\n\n &.Truncate-text--expandable:hover,\n &.Truncate-text--expandable:focus,\n &.Truncate-text--expandable:active {\n max-width: 100% !important;\n flex-shrink: 0;\n cursor: pointer;\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["truncate.pcss"],"names":[],"mappings":"AAEA,UACE,mBAAoB,CACpB,WAAY,CACZ,cA0BF,CAxBE,yBACE,aAAc,CACd,qBAAsB,CACtB,eAAgB,CAChB,sBAAuB,CACvB,kBAkBF,CAhBE,6CAEE,oCACF,CAEA,qDACE,eACF,CAEA,2LAGE,wBAA0B,CAC1B,aAAc,CACd,cACF","file":"truncate.css","sourcesContent":["/* Truncate */\n\n.Truncate {\n display: inline-flex;\n min-width: 0;\n max-width: 100%;\n\n & > .Truncate-text {\n min-width: 1ch;\n max-width: fit-content;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n & + .Truncate-text {\n /* stylelint-disable-next-line primer/spacing */\n margin-left: var(--control-small-gap);\n }\n\n &.Truncate-text--primary {\n flex-basis: 200%;\n }\n\n &.Truncate-text--expandable:hover,\n &.Truncate-text--expandable:focus,\n &.Truncate-text--expandable:active {\n max-width: 100% !important;\n flex-shrink: 0;\n cursor: pointer;\n }\n }\n}\n"]}
@@ -15,6 +15,10 @@ function setScrollGutter(doc) {
15
15
  return;
16
16
  doc.body.style.setProperty('--dialog-scrollgutter', `${window.innerWidth - doc.body.clientWidth}px`);
17
17
  }
18
+ function updateBodyModalClasses(doc) {
19
+ doc.body.classList.toggle('has-modal', Boolean(doc.querySelector('dialog[open]')));
20
+ doc.body.classList.toggle('has-modal-disable-scroll', Boolean(doc.querySelector('dialog[open].Overlay--disableScroll')));
21
+ }
18
22
  function dialogInvokerButtonHandler(event) {
19
23
  const target = event.target;
20
24
  const button = target?.closest('button');
@@ -75,6 +79,7 @@ function dialogInvokerButtonHandler(event) {
75
79
  }
76
80
  }, { once: true });
77
81
  }
82
+ updateBodyModalClasses(dialog.ownerDocument);
78
83
  }
79
84
  }
80
85
  dialogId = button.getAttribute('data-close-dialog-id') || button.getAttribute('data-submit-dialog-id');
@@ -82,6 +87,7 @@ function dialogInvokerButtonHandler(event) {
82
87
  const dialog = document.getElementById(dialogId);
83
88
  if (dialog instanceof HTMLDialogElement && dialog.open) {
84
89
  dialog.close();
90
+ updateBodyModalClasses(dialog.ownerDocument);
85
91
  }
86
92
  }
87
93
  }
@@ -98,6 +104,7 @@ export class DialogHelperElement extends HTMLElement {
98
104
  const { signal } = (__classPrivateFieldSet(this, _DialogHelperElement_abortController, new AbortController(), "f"));
99
105
  document.addEventListener('click', dialogInvokerButtonHandler, true);
100
106
  document.addEventListener('click', this, { signal });
107
+ this.dialog?.addEventListener('close', () => updateBodyModalClasses(this.dialog.ownerDocument), { signal });
101
108
  new MutationObserver(records => {
102
109
  for (const record of records) {
103
110
  if (record.target === this.dialog) {
@@ -132,14 +139,16 @@ export class DialogHelperElement extends HTMLElement {
132
139
  _DialogHelperElement_abortController = new WeakMap(), _DialogHelperElement_instances = new WeakSet(), _DialogHelperElement_handleDialogOpenAttribute = function _DialogHelperElement_handleDialogOpenAttribute() {
133
140
  if (!this.dialog)
134
141
  return;
142
+ const { ownerDocument } = this.dialog;
135
143
  // We don't want to show the Dialog component as non-modal
136
144
  if (this.dialog.matches('[open]:not(:modal)')) {
137
145
  // eslint-disable-next-line no-restricted-syntax
138
146
  this.dialog.addEventListener('close', e => e.stopImmediatePropagation(), { once: true });
139
147
  this.dialog.close();
140
- setScrollGutter(this.dialog.ownerDocument);
148
+ setScrollGutter(ownerDocument);
141
149
  this.dialog.showModal();
142
150
  }
151
+ updateBodyModalClasses(ownerDocument);
143
152
  };
144
153
  if (!window.customElements.get('dialog-helper')) {
145
154
  window.DialogHelperElement = DialogHelperElement;
@@ -3,6 +3,14 @@ function setScrollGutter(doc: Document) {
3
3
  doc.body.style.setProperty('--dialog-scrollgutter', `${window.innerWidth - doc.body.clientWidth}px`)
4
4
  }
5
5
 
6
+ function updateBodyModalClasses(doc: Document) {
7
+ doc.body.classList.toggle('has-modal', Boolean(doc.querySelector('dialog[open]')))
8
+ doc.body.classList.toggle(
9
+ 'has-modal-disable-scroll',
10
+ Boolean(doc.querySelector('dialog[open].Overlay--disableScroll')),
11
+ )
12
+ }
13
+
6
14
  function dialogInvokerButtonHandler(event: Event) {
7
15
  const target = event.target as HTMLElement
8
16
  const button = target?.closest('button')
@@ -69,6 +77,8 @@ function dialogInvokerButtonHandler(event: Event) {
69
77
  {once: true},
70
78
  )
71
79
  }
80
+
81
+ updateBodyModalClasses(dialog.ownerDocument)
72
82
  }
73
83
  }
74
84
 
@@ -77,6 +87,7 @@ function dialogInvokerButtonHandler(event: Event) {
77
87
  const dialog = document.getElementById(dialogId)
78
88
  if (dialog instanceof HTMLDialogElement && dialog.open) {
79
89
  dialog.close()
90
+ updateBodyModalClasses(dialog.ownerDocument)
80
91
  }
81
92
  }
82
93
  }
@@ -91,6 +102,7 @@ export class DialogHelperElement extends HTMLElement {
91
102
  const {signal} = (this.#abortController = new AbortController())
92
103
  document.addEventListener('click', dialogInvokerButtonHandler, true)
93
104
  document.addEventListener('click', this, {signal})
105
+ this.dialog?.addEventListener('close', () => updateBodyModalClasses(this.dialog!.ownerDocument), {signal})
94
106
  new MutationObserver(records => {
95
107
  for (const record of records) {
96
108
  if (record.target === this.dialog) {
@@ -107,14 +119,17 @@ export class DialogHelperElement extends HTMLElement {
107
119
 
108
120
  #handleDialogOpenAttribute() {
109
121
  if (!this.dialog) return
122
+ const {ownerDocument} = this.dialog
110
123
  // We don't want to show the Dialog component as non-modal
111
124
  if (this.dialog.matches('[open]:not(:modal)')) {
112
125
  // eslint-disable-next-line no-restricted-syntax
113
126
  this.dialog.addEventListener('close', e => e.stopImmediatePropagation(), {once: true})
114
127
  this.dialog.close()
115
- setScrollGutter(this.dialog.ownerDocument)
128
+ setScrollGutter(ownerDocument)
116
129
  this.dialog.showModal()
117
130
  }
131
+
132
+ updateBodyModalClasses(ownerDocument)
118
133
  }
119
134
 
120
135
  handleEvent(event: MouseEvent) {
@@ -10,7 +10,7 @@ module Primer
10
10
  module InstanceMethods
11
11
  delegate :render, :content_tag, :output_buffer, :capture, to: :@view_context
12
12
 
13
- def render_in(view_context, &block)
13
+ def render_in(view_context, **_kwargs, &block)
14
14
  @view_context = view_context
15
15
  before_render
16
16
  perform_render(&block)
@@ -69,7 +69,7 @@ module Primer
69
69
  # assumes the presence of a builder so we create our own here. A builder
70
70
  # cannot be constructed without a corresponding view context, which is why
71
71
  # we have to override render_in and can't create it in the initializer.
72
- def render_in(view_context, &block)
72
+ def render_in(view_context, **_kwargs, &block)
73
73
  @builder = Primer::Forms::Builder.new(
74
74
  nil, nil, view_context, {}
75
75
  )
@@ -16,7 +16,7 @@ module Primer
16
16
  @system_arguments = system_arguments
17
17
  end
18
18
 
19
- def render_in(view_context, &block)
19
+ def render_in(view_context, **_kwargs, &block)
20
20
  builder = Primer::Forms::Builder.new(
21
21
  nil, nil, view_context, {}
22
22
  )
@@ -6,7 +6,7 @@ module Primer
6
6
  module VERSION
7
7
  MAJOR = 0
8
8
  MINOR = 51
9
- PATCH = 4
9
+ PATCH = 6
10
10
 
11
11
  STRING = [MAJOR, MINOR, PATCH].join(".")
12
12
  end
@@ -54,6 +54,8 @@ module Primer
54
54
  # @!group Direction
55
55
  #
56
56
  # @label Direction e
57
+ #
58
+ # @snapshot interactive
57
59
  def direction_e
58
60
  render(Primer::Alpha::Dropdown.new(display: :inline_block)) do |component|
59
61
  component.with_button { "Dropdown" }
@@ -66,6 +68,8 @@ module Primer
66
68
  end
67
69
 
68
70
  # @label Direction ne
71
+ #
72
+ # @snapshot interactive
69
73
  def direction_ne
70
74
  render(Primer::Alpha::Dropdown.new(display: :inline_block)) do |component|
71
75
  component.with_button { "Dropdown" }
@@ -78,6 +82,8 @@ module Primer
78
82
  end
79
83
 
80
84
  # @label Direction s
85
+ #
86
+ # @snapshot interactive
81
87
  def direction_s
82
88
  render(Primer::Alpha::Dropdown.new(display: :inline_block)) do |component|
83
89
  component.with_button { "Dropdown" }
@@ -90,6 +96,8 @@ module Primer
90
96
  end
91
97
 
92
98
  # @label Direction se
99
+ #
100
+ # @snapshot interactive
93
101
  def direction_se
94
102
  render(Primer::Alpha::Dropdown.new(display: :inline_block)) do |component|
95
103
  component.with_button { "Dropdown" }
@@ -102,6 +110,8 @@ module Primer
102
110
  end
103
111
 
104
112
  # @label Direction sw
113
+ #
114
+ # @snapshot interactive
105
115
  def direction_sw
106
116
  render(Primer::Alpha::Dropdown.new(display: :inline_block)) do |component|
107
117
  component.with_button { "Dropdown" }
@@ -114,6 +124,8 @@ module Primer
114
124
  end
115
125
 
116
126
  # @label Direction w
127
+ #
128
+ # @snapshot interactive
117
129
  def direction_w
118
130
  render(Primer::Alpha::Dropdown.new(display: :inline_block)) do |component|
119
131
  component.with_button { "Dropdown" }
@@ -3762,7 +3762,7 @@
3762
3762
  {
3763
3763
  "preview_path": "primer/alpha/dropdown/direction_e",
3764
3764
  "name": "direction_e",
3765
- "snapshot": "false",
3765
+ "snapshot": "interactive",
3766
3766
  "skip_rules": {
3767
3767
  "wont_fix": [
3768
3768
  "region"
@@ -3775,7 +3775,7 @@
3775
3775
  {
3776
3776
  "preview_path": "primer/alpha/dropdown/direction_ne",
3777
3777
  "name": "direction_ne",
3778
- "snapshot": "false",
3778
+ "snapshot": "interactive",
3779
3779
  "skip_rules": {
3780
3780
  "wont_fix": [
3781
3781
  "region"
@@ -3788,7 +3788,7 @@
3788
3788
  {
3789
3789
  "preview_path": "primer/alpha/dropdown/direction_s",
3790
3790
  "name": "direction_s",
3791
- "snapshot": "false",
3791
+ "snapshot": "interactive",
3792
3792
  "skip_rules": {
3793
3793
  "wont_fix": [
3794
3794
  "region"
@@ -3801,7 +3801,7 @@
3801
3801
  {
3802
3802
  "preview_path": "primer/alpha/dropdown/direction_se",
3803
3803
  "name": "direction_se",
3804
- "snapshot": "false",
3804
+ "snapshot": "interactive",
3805
3805
  "skip_rules": {
3806
3806
  "wont_fix": [
3807
3807
  "region"
@@ -3814,7 +3814,7 @@
3814
3814
  {
3815
3815
  "preview_path": "primer/alpha/dropdown/direction_sw",
3816
3816
  "name": "direction_sw",
3817
- "snapshot": "false",
3817
+ "snapshot": "interactive",
3818
3818
  "skip_rules": {
3819
3819
  "wont_fix": [
3820
3820
  "region"
@@ -3827,7 +3827,7 @@
3827
3827
  {
3828
3828
  "preview_path": "primer/alpha/dropdown/direction_w",
3829
3829
  "name": "direction_w",
3830
- "snapshot": "false",
3830
+ "snapshot": "interactive",
3831
3831
  "skip_rules": {
3832
3832
  "wont_fix": [
3833
3833
  "region"
data/static/previews.json CHANGED
@@ -3541,7 +3541,7 @@
3541
3541
  {
3542
3542
  "preview_path": "primer/alpha/dropdown/direction_e",
3543
3543
  "name": "direction_e",
3544
- "snapshot": "false",
3544
+ "snapshot": "interactive",
3545
3545
  "skip_rules": {
3546
3546
  "wont_fix": [
3547
3547
  "region"
@@ -3554,7 +3554,7 @@
3554
3554
  {
3555
3555
  "preview_path": "primer/alpha/dropdown/direction_ne",
3556
3556
  "name": "direction_ne",
3557
- "snapshot": "false",
3557
+ "snapshot": "interactive",
3558
3558
  "skip_rules": {
3559
3559
  "wont_fix": [
3560
3560
  "region"
@@ -3567,7 +3567,7 @@
3567
3567
  {
3568
3568
  "preview_path": "primer/alpha/dropdown/direction_s",
3569
3569
  "name": "direction_s",
3570
- "snapshot": "false",
3570
+ "snapshot": "interactive",
3571
3571
  "skip_rules": {
3572
3572
  "wont_fix": [
3573
3573
  "region"
@@ -3580,7 +3580,7 @@
3580
3580
  {
3581
3581
  "preview_path": "primer/alpha/dropdown/direction_se",
3582
3582
  "name": "direction_se",
3583
- "snapshot": "false",
3583
+ "snapshot": "interactive",
3584
3584
  "skip_rules": {
3585
3585
  "wont_fix": [
3586
3586
  "region"
@@ -3593,7 +3593,7 @@
3593
3593
  {
3594
3594
  "preview_path": "primer/alpha/dropdown/direction_sw",
3595
3595
  "name": "direction_sw",
3596
- "snapshot": "false",
3596
+ "snapshot": "interactive",
3597
3597
  "skip_rules": {
3598
3598
  "wont_fix": [
3599
3599
  "region"
@@ -3606,7 +3606,7 @@
3606
3606
  {
3607
3607
  "preview_path": "primer/alpha/dropdown/direction_w",
3608
3608
  "name": "direction_w",
3609
- "snapshot": "false",
3609
+ "snapshot": "interactive",
3610
3610
  "skip_rules": {
3611
3611
  "wont_fix": [
3612
3612
  "region"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: primer_view_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.51.4
4
+ version: 0.51.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub Open Source
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-04-18 00:00:00.000000000 Z
11
+ date: 2026-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview