openproject-primer_view_components 0.75.2 → 0.77.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +20 -0
- data/app/assets/javascripts/primer_view_components.js +1 -1
- data/app/assets/javascripts/primer_view_components.js.map +1 -1
- data/app/assets/styles/primer_view_components.css +1 -1
- data/app/assets/styles/primer_view_components.css.map +1 -1
- data/app/components/primer/alpha/select_panel.rb +12 -11
- data/app/components/primer/alpha/tree_view/tree_view.js +4 -3
- data/app/components/primer/alpha/tree_view/tree_view.ts +3 -4
- data/app/components/primer/beta/avatar_stack.css +1 -1
- data/app/components/primer/beta/avatar_stack.css.json +0 -1
- data/app/components/primer/beta/avatar_stack.css.map +1 -1
- data/app/components/primer/beta/avatar_stack.pcss +0 -10
- data/app/components/primer/open_project/page_header.css +1 -1
- data/app/components/primer/open_project/page_header.css.json +3 -1
- data/app/components/primer/open_project/page_header.css.map +1 -1
- data/app/components/primer/open_project/page_header.pcss +12 -0
- data/app/components/primer/open_project/page_header.rb +8 -4
- data/lib/primer/view_components/version.rb +2 -2
- data/previews/primer/alpha/select_panel_preview/remote_fetch_form.html.erb +0 -1
- data/previews/primer/alpha/select_panel_preview/select_panel_with_icon_button.html.erb +19 -0
- data/previews/primer/alpha/select_panel_preview.rb +8 -0
- data/previews/primer/open_project/page_header_preview.rb +26 -10
- data/static/arguments.json +1 -7
- data/static/classes.json +3 -0
- data/static/info_arch.json +42 -16
- data/static/previews.json +34 -8
- metadata +5 -4
|
@@ -354,8 +354,7 @@ module Primer
|
|
|
354
354
|
# @param dynamic_aria_label_prefix [String] If provided, the prefix is prepended to the dynamic label and set as the value of the `aria-label` attribute on the show button.
|
|
355
355
|
# @param body_id [String] The unique ID of the panel body. If not provided, the body ID will be set to the panel ID with a "-body" suffix.
|
|
356
356
|
# @param list_arguments [Hash] Arguments to pass to the underlying <%= link_to_component(Primer::Alpha::ActionList) %> component. Only has an effect for the local fetch strategy.
|
|
357
|
-
# @param form_arguments [Hash] Form arguments. Supported for
|
|
358
|
-
# @param use_experimental_non_local_form [Boolean] A feature flag used to slowly roll out moving the input field (generated from form arguments) to the top of the SelectPanel HTML thus allowing remote fetching to have default form values. At this time, support is only available for the :single select variant. See: https://github.com/github/primer/issues/4923.
|
|
357
|
+
# @param form_arguments [Hash] Form arguments. Supported for all fetch strategies.
|
|
359
358
|
# @param show_filter [Boolean] Whether or not to show the filter input.
|
|
360
359
|
# @param open_on_load [Boolean] Open the panel when the page loads.
|
|
361
360
|
# @param anchor_align [Symbol] The anchor alignment of the Overlay. <%= one_of(Primer::Alpha::Overlay::ANCHOR_ALIGN_OPTIONS) %>
|
|
@@ -377,7 +376,6 @@ module Primer
|
|
|
377
376
|
dynamic_label_prefix: nil,
|
|
378
377
|
dynamic_aria_label_prefix: nil,
|
|
379
378
|
body_id: nil,
|
|
380
|
-
use_experimental_non_local_form: false,
|
|
381
379
|
list_arguments: {},
|
|
382
380
|
form_arguments: {},
|
|
383
381
|
show_filter: true,
|
|
@@ -411,13 +409,11 @@ module Primer
|
|
|
411
409
|
@loading_label = loading_label
|
|
412
410
|
@loading_description_id = nil
|
|
413
411
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
@input_name = form_arguments[:name]
|
|
418
|
-
end
|
|
412
|
+
@form_builder = form_arguments[:builder]
|
|
413
|
+
@value = form_arguments[:value]
|
|
414
|
+
@input_name = form_arguments[:name]
|
|
419
415
|
|
|
420
|
-
@list_form_arguments =
|
|
416
|
+
@list_form_arguments = {}
|
|
421
417
|
|
|
422
418
|
if loading_description.present?
|
|
423
419
|
@loading_description_id = "#{@panel_id}-loading-description"
|
|
@@ -509,8 +505,9 @@ module Primer
|
|
|
509
505
|
|
|
510
506
|
# Adds a show button (i.e. a button) that will open the panel when clicked.
|
|
511
507
|
#
|
|
508
|
+
# @param icon [String] Name of <%= link_to_octicons %> to use instead of text. If an [icon](https://primer.style/octicons/usage-guidelines/) is provided, a <%= link_to_component(Primer::Beta::IconButton) %> will be rendered. Otherwise a <%= link_to_component(Primer::Beta::Button) %> will be rendered.
|
|
512
509
|
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Beta::Button) %>.
|
|
513
|
-
renders_one :show_button, lambda {
|
|
510
|
+
renders_one :show_button, lambda { |icon: nil, **system_arguments|
|
|
514
511
|
system_arguments[:id] = "#{@panel_id}-button"
|
|
515
512
|
|
|
516
513
|
system_arguments[:aria] = merge_aria(
|
|
@@ -518,7 +515,11 @@ module Primer
|
|
|
518
515
|
{ aria: { controls: "#{@panel_id}-dialog", "haspopup": "dialog", "expanded": "false" } }
|
|
519
516
|
)
|
|
520
517
|
|
|
521
|
-
|
|
518
|
+
if icon.present?
|
|
519
|
+
Primer::Beta::IconButton.new(icon: icon, **system_arguments)
|
|
520
|
+
else
|
|
521
|
+
Primer::Beta::Button.new(**system_arguments)
|
|
522
|
+
end
|
|
522
523
|
}
|
|
523
524
|
|
|
524
525
|
# Customizable content for the error message that appears when items are fetched for the first time. This message
|
|
@@ -117,9 +117,10 @@ let TreeViewElement = class TreeViewElement extends HTMLElement {
|
|
|
117
117
|
}));
|
|
118
118
|
if (!checkSuccess)
|
|
119
119
|
return;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
if (this.getNodeCheckedValue(node) === 'true') {
|
|
121
|
+
this.setNodeCheckedValue(node, 'false');
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
123
124
|
this.checkOnlyAtPath(path);
|
|
124
125
|
}
|
|
125
126
|
this.dispatchEvent(new CustomEvent('treeViewNodeChecked', {
|
|
@@ -206,10 +206,9 @@ export class TreeViewElement extends HTMLElement {
|
|
|
206
206
|
|
|
207
207
|
if (!checkSuccess) return
|
|
208
208
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
if (!currentlyChecked) {
|
|
209
|
+
if (this.getNodeCheckedValue(node) === 'true') {
|
|
210
|
+
this.setNodeCheckedValue(node, 'false')
|
|
211
|
+
} else {
|
|
213
212
|
this.checkOnlyAtPath(path)
|
|
214
213
|
}
|
|
215
214
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.AvatarStack{height:20px;min-width:26px;position:relative}.AvatarStack .AvatarStack-body{position:absolute}.AvatarStack.AvatarStack--two{min-width:36px}.AvatarStack.AvatarStack--three-plus{min-width:46px}.AvatarStack-body{background:var(--bgColor-default);border-radius:100px;display:flex}.AvatarStack-body .avatar{background-color:var(--bgColor-default);border-radius:var(--borderRadius-small);
|
|
1
|
+
.AvatarStack{height:20px;min-width:26px;position:relative}.AvatarStack .AvatarStack-body{position:absolute}.AvatarStack.AvatarStack--two{min-width:36px}.AvatarStack.AvatarStack--three-plus{min-width:46px}.AvatarStack-body{background:var(--bgColor-default);border-radius:100px;display:flex}.AvatarStack-body .avatar{background-color:var(--bgColor-default);border-radius:var(--borderRadius-small);box-sizing:initial;display:flex;height:20px;margin-right:-11px;position:relative;transition:margin .1s ease-in-out;width:20px;z-index:2}:is(.AvatarStack-body .avatar):first-child{z-index:3}:is(.AvatarStack-body .avatar):last-child{z-index:1}:is(.AvatarStack-body .avatar) img{border-radius:var(--borderRadius-small)}:is(.AvatarStack-body .avatar):nth-child(n+4){display:none;opacity:0}.AvatarStack-body:hover .avatar{margin-right:var(--base-size-4)}.AvatarStack-body:hover .avatar:nth-child(n+4){display:flex;opacity:1}.AvatarStack-body:hover .avatar-more{display:none!important}.avatar.avatar-more{background:var(--bgColor-muted);margin-right:0;z-index:1}.avatar.avatar-more:after,.avatar.avatar-more:before{border-radius:2px;content:"";display:block;height:20px;outline:var(--borderWidth-thin) solid var(--bgColor-default);position:absolute}.avatar.avatar-more:before{background:var(--avatarStack-fade-bgColor-muted);width:17px}.avatar.avatar-more:after{background:var(--avatarStack-fade-bgColor-default);width:14px}.AvatarStack--right .AvatarStack-body{flex-direction:row-reverse;right:0}:is(.AvatarStack--right .AvatarStack-body):hover .avatar{margin-left:var(--base-size-4);margin-right:0}.AvatarStack--right .avatar.avatar-more{background:var(--avatarStack-fade-bgColor-default)}:is(.AvatarStack--right .avatar.avatar-more):before{width:5px}:is(.AvatarStack--right .avatar.avatar-more):after{background:var(--bgColor-muted);width:2px}.AvatarStack--right .avatar{margin-left:-11px;margin-right:0}
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
".avatar.avatar-more:before",
|
|
20
20
|
".AvatarStack--right .AvatarStack-body",
|
|
21
21
|
":is(.AvatarStack--right .AvatarStack-body):hover .avatar",
|
|
22
|
-
":is(.AvatarStack--right .AvatarStack-body) .avatar:not(:last-child)",
|
|
23
22
|
".AvatarStack--right .avatar.avatar-more",
|
|
24
23
|
":is(.AvatarStack--right .avatar.avatar-more):before",
|
|
25
24
|
":is(.AvatarStack--right .avatar.avatar-more):after",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["avatar_stack.pcss"],"names":[],"mappings":"AAKA,aAGE,WAAY,CADZ,cAAe,CADf,iBAeF,CAXE,+BACE,iBACF,CAEA,8BACE,cACF,CAEA,qCACE,cACF,CAGF,kBAEE,iCAAkC,CAElC,mBAAoB,CAHpB,
|
|
1
|
+
{"version":3,"sources":["avatar_stack.pcss"],"names":[],"mappings":"AAKA,aAGE,WAAY,CADZ,cAAe,CADf,iBAeF,CAXE,+BACE,iBACF,CAEA,8BACE,cACF,CAEA,qCACE,cACF,CAGF,kBAEE,iCAAkC,CAElC,mBAAoB,CAHpB,YAoDF,CA/CE,0BASE,uCAAwC,CACxC,uCAAwC,CAJxC,kBAAuB,CAHvB,YAAa,CAEb,WAAY,CAGZ,kBAAmB,CAPnB,iBAAkB,CAUlB,iCAAmC,CAPnC,UAAW,CAFX,SA6BF,CAlBE,2CACE,SACF,CAEA,0CACE,SACF,CAGA,mCACE,uCACF,CAGA,8CACE,YAAa,CACb,SACF,CAIA,gCACE,+BACF,CAEA,+CACE,YAAa,CACb,SACF,CAEA,qCACE,sBACF,CAIJ,oBAGE,+BAAgC,CADhC,cAAe,CADf,SAwBF,CApBE,qDAOE,iBAAkB,CAFlB,UAAW,CAFX,aAAc,CACd,WAAY,CAIZ,4DAA6D,CAN7D,iBAOF,CAEA,2BAEE,gDAAiD,CADjD,UAEF,CAEA,0BAEE,kDAAmD,CADnD,UAEF,CAMA,sCAEE,0BAA2B,CAD3B,OAOF,CAJE,yDAEE,8BAA+B,CAD/B,cAEF,CAGF,wCACE,kDAUF,CARE,oDACE,SACF,CAEA,mDAEE,+BAAgC,CADhC,SAEF,CAGF,4BAGE,iBAAkB,CAFlB,cAGF","file":"avatar_stack.css","sourcesContent":["/* AvatarStack */\n\n/* Stacked avatars can be used to show who is participating in thread when\n** there is limited space available. */\n\n.AvatarStack {\n position: relative;\n min-width: 26px;\n height: 20px;\n\n & .AvatarStack-body {\n position: absolute;\n }\n\n &.AvatarStack--two {\n min-width: 36px;\n }\n\n &.AvatarStack--three-plus {\n min-width: 46px;\n }\n}\n\n.AvatarStack-body {\n display: flex;\n background: var(--bgColor-default);\n /* stylelint-disable-next-line primer/borders */\n border-radius: 100px;\n\n & .avatar {\n position: relative;\n z-index: 2;\n display: flex;\n width: 20px;\n height: 20px;\n box-sizing: content-box;\n /* stylelint-disable-next-line primer/spacing */\n margin-right: -11px;\n background-color: var(--bgColor-default);\n border-radius: var(--borderRadius-small);\n transition: margin 0.1s ease-in-out;\n\n &:first-child {\n z-index: 3;\n }\n\n &:last-child {\n z-index: 1;\n }\n\n /* stylelint-disable-next-line selector-max-type */\n & img {\n border-radius: var(--borderRadius-small);\n }\n\n /* Account for 4+ avatars */\n &:nth-child(n + 4) {\n display: none;\n opacity: 0;\n }\n }\n\n &:hover {\n & .avatar {\n margin-right: var(--base-size-4);\n }\n\n & .avatar:nth-child(n + 4) {\n display: flex;\n opacity: 1;\n }\n\n & .avatar-more {\n display: none !important;\n }\n }\n}\n\n.avatar.avatar-more {\n z-index: 1;\n margin-right: 0;\n background: var(--bgColor-muted);\n\n &::before,\n &::after {\n position: absolute;\n display: block;\n height: 20px;\n content: '';\n /* stylelint-disable-next-line primer/borders */\n border-radius: 2px;\n outline: var(--borderWidth-thin) solid var(--bgColor-default);\n }\n\n &::before {\n width: 17px;\n background: var(--avatarStack-fade-bgColor-muted);\n }\n\n &::after {\n width: 14px;\n background: var(--avatarStack-fade-bgColor-default);\n }\n}\n\n/* Right aligned variation */\n\n.AvatarStack--right {\n & .AvatarStack-body {\n right: 0;\n flex-direction: row-reverse;\n\n &:hover .avatar {\n margin-right: 0;\n margin-left: var(--base-size-4);\n }\n }\n\n & .avatar.avatar-more {\n background: var(--avatarStack-fade-bgColor-default);\n\n &::before {\n width: 5px;\n }\n\n &::after {\n width: 2px;\n background: var(--bgColor-muted);\n }\n }\n\n & .avatar {\n margin-right: 0;\n /* stylelint-disable-next-line primer/spacing */\n margin-left: -11px;\n }\n}\n"]}
|
|
@@ -37,8 +37,6 @@
|
|
|
37
37
|
/* stylelint-disable-next-line primer/spacing */
|
|
38
38
|
margin-right: -11px;
|
|
39
39
|
background-color: var(--bgColor-default);
|
|
40
|
-
/* stylelint-disable-next-line primer/colors */
|
|
41
|
-
border-right: var(--borderWidth-thin) solid var(--bgColor-default);
|
|
42
40
|
border-radius: var(--borderRadius-small);
|
|
43
41
|
transition: margin 0.1s ease-in-out;
|
|
44
42
|
|
|
@@ -48,7 +46,6 @@
|
|
|
48
46
|
|
|
49
47
|
&:last-child {
|
|
50
48
|
z-index: 1;
|
|
51
|
-
border-right: 0;
|
|
52
49
|
}
|
|
53
50
|
|
|
54
51
|
/* stylelint-disable-next-line selector-max-type */
|
|
@@ -117,10 +114,6 @@
|
|
|
117
114
|
margin-right: 0;
|
|
118
115
|
margin-left: var(--base-size-4);
|
|
119
116
|
}
|
|
120
|
-
|
|
121
|
-
& .avatar:not(:last-child) {
|
|
122
|
-
border-left: 0;
|
|
123
|
-
}
|
|
124
117
|
}
|
|
125
118
|
|
|
126
119
|
& .avatar.avatar-more {
|
|
@@ -140,8 +133,5 @@
|
|
|
140
133
|
margin-right: 0;
|
|
141
134
|
/* stylelint-disable-next-line primer/spacing */
|
|
142
135
|
margin-left: -11px;
|
|
143
|
-
border-right: 0;
|
|
144
|
-
/* stylelint-disable-next-line primer/colors */
|
|
145
|
-
border-left: var(--borderWidth-thin) solid var(--bgColor-default);
|
|
146
136
|
}
|
|
147
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.PageHeader{border-bottom:var(--borderWidth-thin) solid var(--borderColor-muted);display:flex;flex-flow:column;margin-bottom:var(--base-size-16);padding-bottom:var(--base-size-8)}.PageHeader--withTabNav{border-bottom:none;margin-bottom:0;padding-bottom:0}.PageHeader-contextBar{height:var(--control-small-size)}.PageHeader-contextBar,.PageHeader-titleBar{align-items:center;display:flex;flex-flow:row;justify-content:flex-end;margin-bottom:var(--base-size-8)}.PageHeader-title{flex:1 1 auto;font-size:var(--text-title-size-medium)}.PageHeader-title--large{font-size:var(--text-title-size-large)}.PageHeader-description{color:var(--fgColor-muted);flex:1 auto;font-size:var(--text-body-size-medium)}.PageHeader-description--underlined-links a{-webkit-text-decoration:underline;text-decoration:underline}.PageHeader-tabNavBar{overflow:auto}.PageHeader-tabNavBar .PageHeader-tabNav{min-width:max-content}.PageHeader--withTabNav .PageHeader-description{margin-bottom:var(--base-size-16)}.PageHeader-actions{align-items:center;display:flex;justify-content:flex-end}.PageHeader-breadcrumbs{display:block;width:100%}.PageHeader-leadingAction{margin-right:var(--base-size-4);margin-top:var(--base-size-2)}.PageHeader-parentLink{flex:1 1 auto}
|
|
1
|
+
.PageHeader{border-bottom:var(--borderWidth-thin) solid var(--borderColor-muted);display:flex;flex-flow:column;margin-bottom:var(--base-size-16);padding-bottom:var(--base-size-8)}.PageHeader--withTabNav{border-bottom:none;margin-bottom:0;padding-bottom:0}.PageHeader-contextBar{height:var(--control-small-size)}.PageHeader-contextBar,.PageHeader-titleBar{align-items:center;display:flex;flex-flow:row;justify-content:flex-end;margin-bottom:var(--base-size-8)}.PageHeader-title{flex:1 1 auto;font-size:var(--text-title-size-medium)}.PageHeader-title--large{font-size:var(--text-title-size-large)}.PageHeader-description{color:var(--fgColor-muted);flex:1 auto;font-size:var(--text-body-size-medium)}.PageHeader-description--underlined-links a{-webkit-text-decoration:underline;text-decoration:underline}.PageHeader-tabNavBar{overflow:auto}.PageHeader-tabNavBar .PageHeader-tabNav{min-width:max-content}.PageHeader--withTabNav .PageHeader-description{margin-bottom:var(--base-size-16)}.PageHeader-actions{align-items:center;display:flex;justify-content:flex-end}.PageHeader-breadcrumbs{display:block;width:100%}.PageHeader-leadingAction{margin-right:var(--base-size-4);margin-top:var(--base-size-2)}.PageHeader-parentLink{flex:1 1 auto}@media screen and (min-width:543.98px){.PageHeader--noBreadcrumb .PageHeader-contextBar{display:none}}.PageHeader--noBreadcrumb .PageHeader-titleBar{height:var(--control-small-size)}
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
".PageHeader-actions",
|
|
16
16
|
".PageHeader-breadcrumbs",
|
|
17
17
|
".PageHeader-leadingAction",
|
|
18
|
-
".PageHeader-parentLink"
|
|
18
|
+
".PageHeader-parentLink",
|
|
19
|
+
".PageHeader--noBreadcrumb .PageHeader-contextBar",
|
|
20
|
+
".PageHeader--noBreadcrumb .PageHeader-titleBar"
|
|
19
21
|
]
|
|
20
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["page_header.pcss"],"names":[],"mappings":"AAEA,YAIE,oEAAqE,CAHrE,YAAa,CAIb,gBAAiB,CAFjB,iCAAkC,CADlC,iCAIF,CAEA,wBACE,kBAAmB,CAEnB,eAAgB,CADhB,gBAEF,CAEA,uBAME,gCACF,CAEA,4CALE,kBAAmB,CAHnB,YAAa,CACb,aAAc,CACd,wBAAyB,CAEzB,gCAUF,CAEA,kBAEE,aAAc,CADd,uCAEF,CAEA,yBACE,sCACF,CAGA,wBAEE,0BAA2B,CAC3B,WAAY,CAFZ,sCAGF,CAEA,4CAEE,iCAA0B,CAA1B,yBACF,CAEA,sBACE,aACF,CAEA,yCACE,qBACF,CAEA,gDACE,iCACF,CAEA,oBAGE,kBAAmB,CADnB,YAAa,CADb,wBAGF,CAEA,wBACE,aAAc,CACd,UACF,CAEA,0BAEE,+BAAgC,CADhC,6BAEF,CAEA,uBACE,aACF","file":"page_header.css","sourcesContent":["/* OP PageHeader */\n\n.PageHeader {\n display: flex;\n padding-bottom: var(--base-size-8);\n margin-bottom: var(--base-size-16);\n border-bottom: var(--borderWidth-thin) solid var(--borderColor-muted);\n flex-flow: column;\n}\n\n.PageHeader--withTabNav {\n border-bottom: none;\n padding-bottom: 0;\n margin-bottom: 0;\n}\n\n.PageHeader-contextBar {\n display: flex;\n flex-flow: row;\n justify-content: flex-end;\n align-items: center;\n margin-bottom: var(--base-size-8);\n height: var(--control-small-size);\n}\n\n.PageHeader-titleBar {\n display: flex;\n flex-flow: row;\n justify-content: flex-end;\n align-items: center; /* Keep back button vertically aligned. */\n margin-bottom: var(--base-size-8);\n}\n\n.PageHeader-title {\n font-size: var(--text-title-size-medium);\n flex: 1 1 auto;\n}\n\n.PageHeader-title--large {\n font-size: var(--text-title-size-large);\n}\n\n/* One-liner of supporting text */\n.PageHeader-description {\n font-size: var(--text-body-size-medium);\n color: var(--fgColor-muted);\n flex: 1 auto;\n}\n\n.PageHeader-description--underlined-links a {\n /* Ensure the accessibility is met, given that the description is written in light grey */\n text-decoration: underline;\n}\n\n.PageHeader-tabNavBar {\n overflow: auto;\n}\n\n.PageHeader-tabNavBar .PageHeader-tabNav {\n min-width: max-content;\n}\n\n.PageHeader--withTabNav .PageHeader-description {\n margin-bottom: var(--base-size-16);\n}\n\n.PageHeader-actions {\n justify-content: flex-end;\n display: flex;\n align-items: center;\n}\n\n.PageHeader-breadcrumbs {\n display: block;\n width: 100%;\n}\n\n.PageHeader-leadingAction {\n margin-top: var(--base-size-2); /* to center align with label */\n margin-right: var(--base-size-4);\n}\n\n.PageHeader-parentLink {\n flex: 1 1 auto;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["page_header.pcss"],"names":[],"mappings":"AAEA,YAIE,oEAAqE,CAHrE,YAAa,CAIb,gBAAiB,CAFjB,iCAAkC,CADlC,iCAIF,CAEA,wBACE,kBAAmB,CAEnB,eAAgB,CADhB,gBAEF,CAEA,uBAME,gCACF,CAEA,4CALE,kBAAmB,CAHnB,YAAa,CACb,aAAc,CACd,wBAAyB,CAEzB,gCAUF,CAEA,kBAEE,aAAc,CADd,uCAEF,CAEA,yBACE,sCACF,CAGA,wBAEE,0BAA2B,CAC3B,WAAY,CAFZ,sCAGF,CAEA,4CAEE,iCAA0B,CAA1B,yBACF,CAEA,sBACE,aACF,CAEA,yCACE,qBACF,CAEA,gDACE,iCACF,CAEA,oBAGE,kBAAmB,CADnB,YAAa,CADb,wBAGF,CAEA,wBACE,aAAc,CACd,UACF,CAEA,0BAEE,+BAAgC,CADhC,6BAEF,CAEA,uBACE,aACF,CAGA,uCACE,iDACE,YACF,CACF,CAGA,+CACE,gCACF","file":"page_header.css","sourcesContent":["/* OP PageHeader */\n\n.PageHeader {\n display: flex;\n padding-bottom: var(--base-size-8);\n margin-bottom: var(--base-size-16);\n border-bottom: var(--borderWidth-thin) solid var(--borderColor-muted);\n flex-flow: column;\n}\n\n.PageHeader--withTabNav {\n border-bottom: none;\n padding-bottom: 0;\n margin-bottom: 0;\n}\n\n.PageHeader-contextBar {\n display: flex;\n flex-flow: row;\n justify-content: flex-end;\n align-items: center;\n margin-bottom: var(--base-size-8);\n height: var(--control-small-size);\n}\n\n.PageHeader-titleBar {\n display: flex;\n flex-flow: row;\n justify-content: flex-end;\n align-items: center; /* Keep back button vertically aligned. */\n margin-bottom: var(--base-size-8);\n}\n\n.PageHeader-title {\n font-size: var(--text-title-size-medium);\n flex: 1 1 auto;\n}\n\n.PageHeader-title--large {\n font-size: var(--text-title-size-large);\n}\n\n/* One-liner of supporting text */\n.PageHeader-description {\n font-size: var(--text-body-size-medium);\n color: var(--fgColor-muted);\n flex: 1 auto;\n}\n\n.PageHeader-description--underlined-links a {\n /* Ensure the accessibility is met, given that the description is written in light grey */\n text-decoration: underline;\n}\n\n.PageHeader-tabNavBar {\n overflow: auto;\n}\n\n.PageHeader-tabNavBar .PageHeader-tabNav {\n min-width: max-content;\n}\n\n.PageHeader--withTabNav .PageHeader-description {\n margin-bottom: var(--base-size-16);\n}\n\n.PageHeader-actions {\n justify-content: flex-end;\n display: flex;\n align-items: center;\n}\n\n.PageHeader-breadcrumbs {\n display: block;\n width: 100%;\n}\n\n.PageHeader-leadingAction {\n margin-top: var(--base-size-2); /* to center align with label */\n margin-right: var(--base-size-4);\n}\n\n.PageHeader-parentLink {\n flex: 1 1 auto;\n}\n\n/* Hide the context bar on desktop when no breadcrumb is visible */\n@media screen and (min-width: 543.98px) {\n .PageHeader--noBreadcrumb .PageHeader-contextBar {\n display: none;\n }\n}\n\n/* Match the title bar height with the toggle menu button for proper vertical alignment */\n.PageHeader--noBreadcrumb .PageHeader-titleBar {\n height: var(--control-small-size);\n}"]}
|
|
@@ -83,3 +83,15 @@
|
|
|
83
83
|
.PageHeader-parentLink {
|
|
84
84
|
flex: 1 1 auto;
|
|
85
85
|
}
|
|
86
|
+
|
|
87
|
+
/* Hide the context bar on desktop when no breadcrumb is visible */
|
|
88
|
+
@media screen and (min-width: 543.98px) {
|
|
89
|
+
.PageHeader--noBreadcrumb .PageHeader-contextBar {
|
|
90
|
+
display: none;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* Match the title bar height with the toggle menu button for proper vertical alignment */
|
|
95
|
+
.PageHeader--noBreadcrumb .PageHeader-titleBar {
|
|
96
|
+
height: var(--control-small-size);
|
|
97
|
+
}
|
|
@@ -40,7 +40,6 @@ module Primer
|
|
|
40
40
|
"PageHeader-title",
|
|
41
41
|
"PageHeader-title--#{variant}"
|
|
42
42
|
)
|
|
43
|
-
|
|
44
43
|
Primer::OpenProject::PageHeader::Title.new(state: @state, **system_arguments)
|
|
45
44
|
}
|
|
46
45
|
|
|
@@ -181,12 +180,17 @@ module Primer
|
|
|
181
180
|
Primer::Beta::IconButton.new(icon: icon, **system_arguments)
|
|
182
181
|
}
|
|
183
182
|
|
|
184
|
-
#
|
|
185
|
-
#
|
|
186
|
-
#
|
|
183
|
+
# Using PageHeader without breadcrumbs is only recommended in special cases.
|
|
184
|
+
# In doubt, please check the PageHeader component documentation.
|
|
187
185
|
# @param items [Array<String, Hash>] Items is an array of strings, hash {href, text} or an anchor tag string
|
|
188
186
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
|
189
187
|
renders_one :breadcrumbs, lambda { |items, selected_item_font_weight: :bold, **system_arguments|
|
|
188
|
+
if items.nil?
|
|
189
|
+
# No breadcrumbs → mark the PageHeader with a special class
|
|
190
|
+
@system_arguments[:classes] = class_names(@system_arguments[:classes], "PageHeader--noBreadcrumb")
|
|
191
|
+
return
|
|
192
|
+
end
|
|
193
|
+
|
|
190
194
|
system_arguments[:classes] = class_names(system_arguments[:classes], "PageHeader-breadcrumbs")
|
|
191
195
|
system_arguments[:display] ||= DEFAULT_BREADCRUMBS_DISPLAY
|
|
192
196
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<% subject_id = SecureRandom.hex %>
|
|
2
|
+
|
|
3
|
+
<%= render(Primer::Alpha::SelectPanel.new(
|
|
4
|
+
data: { interaction_subject: subject_id },
|
|
5
|
+
select_variant: :single,
|
|
6
|
+
fetch_strategy: :local,
|
|
7
|
+
dynamic_label: true,
|
|
8
|
+
dynamic_label_prefix: "Item",
|
|
9
|
+
dynamic_aria_label_prefix: "Selected item",
|
|
10
|
+
open_on_load: open_on_load
|
|
11
|
+
)) do |panel| %>
|
|
12
|
+
<% panel.with_show_button(icon: :star, scheme: :invisible, "aria-label": 'Menu') %>
|
|
13
|
+
|
|
14
|
+
<% panel.with_item(label: "Item 1") %>
|
|
15
|
+
<% panel.with_item(label: "Item 2") %>
|
|
16
|
+
<% panel.with_item(label: "Item 3") %>
|
|
17
|
+
<% end %>
|
|
18
|
+
|
|
19
|
+
<%= render partial: "primer/alpha/select_panel_preview/interaction_subject_js", locals: { subject_id: subject_id } %>
|
|
@@ -186,6 +186,14 @@ module Primer
|
|
|
186
186
|
render_with_template(locals: { open_on_load: open_on_load })
|
|
187
187
|
end
|
|
188
188
|
|
|
189
|
+
# @label SelectPanel with Primer::IconButton
|
|
190
|
+
#
|
|
191
|
+
# @snapshot interactive
|
|
192
|
+
# @param open_on_load toggle
|
|
193
|
+
def select_panel_with_icon_button(open_on_load: false)
|
|
194
|
+
render_with_template(locals: { open_on_load: open_on_load })
|
|
195
|
+
end
|
|
196
|
+
|
|
189
197
|
# @!group With icons
|
|
190
198
|
|
|
191
199
|
# @label With leading icons
|
|
@@ -191,6 +191,32 @@ module Primer
|
|
|
191
191
|
end
|
|
192
192
|
end
|
|
193
193
|
|
|
194
|
+
# @label Without breadcrumbs
|
|
195
|
+
# A PageHeader example that renders without breadcrumbs.
|
|
196
|
+
# This should only be done for *entry pages* (such as overview pages).
|
|
197
|
+
# In case of doubt, please check with the Dream team.
|
|
198
|
+
def without_breadcrumbs
|
|
199
|
+
render(Primer::OpenProject::PageHeader.new) do |header|
|
|
200
|
+
header.with_title { "Hello" }
|
|
201
|
+
header.with_breadcrumbs(nil)
|
|
202
|
+
header.with_description { "This PageHeader does not have any breadcrumbs." }
|
|
203
|
+
header.with_action_button(mobile_icon: "star", mobile_label: "Star") do |button|
|
|
204
|
+
button.with_leading_visual_icon(icon: "star")
|
|
205
|
+
"Star"
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
# @label With skipable breadcrumb items
|
|
211
|
+
def skip_breadcrumb_item
|
|
212
|
+
render(Primer::OpenProject::PageHeader.new) do |component|
|
|
213
|
+
component.with_title { "Resize me to mobile screen size" }
|
|
214
|
+
component.with_breadcrumbs([{ href: "/foo", text: "Foo" },
|
|
215
|
+
{ href: "/bar", text: "Bar", skip_for_mobile: true },
|
|
216
|
+
"Baz"])
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
194
220
|
# @label With tab nav
|
|
195
221
|
#
|
|
196
222
|
def tab_nav
|
|
@@ -257,16 +283,6 @@ module Primer
|
|
|
257
283
|
end
|
|
258
284
|
end
|
|
259
285
|
|
|
260
|
-
# @label With skipable breadcrumb items
|
|
261
|
-
def skip_breadcrumb_item
|
|
262
|
-
render(Primer::OpenProject::PageHeader.new) do |component|
|
|
263
|
-
component.with_title { "Resize me to mobile screen size" }
|
|
264
|
-
component.with_breadcrumbs([{ href: "/foo", text: "Foo" },
|
|
265
|
-
{ href: "/bar", text: "Bar", skip_for_mobile: true },
|
|
266
|
-
"Baz"])
|
|
267
|
-
end
|
|
268
|
-
end
|
|
269
|
-
|
|
270
286
|
# @label With a link in the description
|
|
271
287
|
def description
|
|
272
288
|
render_with_template(template: "primer/open_project/page_header_preview/description")
|
data/static/arguments.json
CHANGED
|
@@ -2607,13 +2607,7 @@
|
|
|
2607
2607
|
"name": "form_arguments",
|
|
2608
2608
|
"type": "Hash",
|
|
2609
2609
|
"default": "`{}`",
|
|
2610
|
-
"description": "Form arguments. Supported for
|
|
2611
|
-
},
|
|
2612
|
-
{
|
|
2613
|
-
"name": "use_experimental_non_local_form",
|
|
2614
|
-
"type": "Boolean",
|
|
2615
|
-
"default": "`false`",
|
|
2616
|
-
"description": "A feature flag used to slowly roll out moving the input field (generated from form arguments) to the top of the SelectPanel HTML thus allowing remote fetching to have default form values. At this time, support is only available for the :single select variant. See: https://github.com/github/primer/issues/4923."
|
|
2610
|
+
"description": "Form arguments. Supported for all fetch strategies."
|
|
2617
2611
|
},
|
|
2618
2612
|
{
|
|
2619
2613
|
"name": "show_filter",
|
data/static/classes.json
CHANGED
data/static/info_arch.json
CHANGED
|
@@ -7854,13 +7854,7 @@
|
|
|
7854
7854
|
"name": "form_arguments",
|
|
7855
7855
|
"type": "Hash",
|
|
7856
7856
|
"default": "`{}`",
|
|
7857
|
-
"description": "Form arguments. Supported for
|
|
7858
|
-
},
|
|
7859
|
-
{
|
|
7860
|
-
"name": "use_experimental_non_local_form",
|
|
7861
|
-
"type": "Boolean",
|
|
7862
|
-
"default": "`false`",
|
|
7863
|
-
"description": "A feature flag used to slowly roll out moving the input field (generated from form arguments) to the top of the SelectPanel HTML thus allowing remote fetching to have default form values. At this time, support is only available for the :single select variant. See: https://github.com/github/primer/issues/4923."
|
|
7857
|
+
"description": "Form arguments. Supported for all fetch strategies."
|
|
7864
7858
|
},
|
|
7865
7859
|
{
|
|
7866
7860
|
"name": "show_filter",
|
|
@@ -7940,6 +7934,12 @@
|
|
|
7940
7934
|
"name": "show_button",
|
|
7941
7935
|
"description": "Adds a show button (i.e. a button) that will open the panel when clicked.",
|
|
7942
7936
|
"parameters": [
|
|
7937
|
+
{
|
|
7938
|
+
"name": "icon",
|
|
7939
|
+
"type": "String",
|
|
7940
|
+
"default": "N/A",
|
|
7941
|
+
"description": "Name of {{link_to_octicons}} to use instead of text. If an [icon](https://primer.style/octicons/usage-guidelines/) is provided, a {{#link_to_component}}Primer::Beta::IconButton{{/link_to_component}} will be rendered. Otherwise a {{#link_to_component}}Primer::Beta::Button{{/link_to_component}} will be rendered."
|
|
7942
|
+
},
|
|
7943
7943
|
{
|
|
7944
7944
|
"name": "system_arguments",
|
|
7945
7945
|
"type": "Hash",
|
|
@@ -8263,6 +8263,19 @@
|
|
|
8263
8263
|
]
|
|
8264
8264
|
}
|
|
8265
8265
|
},
|
|
8266
|
+
{
|
|
8267
|
+
"preview_path": "primer/alpha/select_panel/select_panel_with_icon_button",
|
|
8268
|
+
"name": "select_panel_with_icon_button",
|
|
8269
|
+
"snapshot": "interactive",
|
|
8270
|
+
"skip_rules": {
|
|
8271
|
+
"wont_fix": [
|
|
8272
|
+
"region"
|
|
8273
|
+
],
|
|
8274
|
+
"will_fix": [
|
|
8275
|
+
"color-contrast"
|
|
8276
|
+
]
|
|
8277
|
+
}
|
|
8278
|
+
},
|
|
8266
8279
|
{
|
|
8267
8280
|
"preview_path": "primer/alpha/select_panel/with_leading_icons",
|
|
8268
8281
|
"name": "with_leading_icons",
|
|
@@ -20363,7 +20376,7 @@
|
|
|
20363
20376
|
},
|
|
20364
20377
|
{
|
|
20365
20378
|
"name": "breadcrumbs",
|
|
20366
|
-
"description": "
|
|
20379
|
+
"description": "Using PageHeader without breadcrumbs is only recommended in special cases.\nIn doubt, please check the PageHeader component documentation.",
|
|
20367
20380
|
"parameters": [
|
|
20368
20381
|
{
|
|
20369
20382
|
"name": "items",
|
|
@@ -20551,8 +20564,8 @@
|
|
|
20551
20564
|
}
|
|
20552
20565
|
},
|
|
20553
20566
|
{
|
|
20554
|
-
"preview_path": "primer/open_project/page_header/
|
|
20555
|
-
"name": "
|
|
20567
|
+
"preview_path": "primer/open_project/page_header/without_breadcrumbs",
|
|
20568
|
+
"name": "without_breadcrumbs",
|
|
20556
20569
|
"snapshot": "false",
|
|
20557
20570
|
"skip_rules": {
|
|
20558
20571
|
"wont_fix": [
|
|
@@ -20564,8 +20577,8 @@
|
|
|
20564
20577
|
}
|
|
20565
20578
|
},
|
|
20566
20579
|
{
|
|
20567
|
-
"preview_path": "primer/open_project/page_header/
|
|
20568
|
-
"name": "
|
|
20580
|
+
"preview_path": "primer/open_project/page_header/skip_breadcrumb_item",
|
|
20581
|
+
"name": "skip_breadcrumb_item",
|
|
20569
20582
|
"snapshot": "false",
|
|
20570
20583
|
"skip_rules": {
|
|
20571
20584
|
"wont_fix": [
|
|
@@ -20577,8 +20590,8 @@
|
|
|
20577
20590
|
}
|
|
20578
20591
|
},
|
|
20579
20592
|
{
|
|
20580
|
-
"preview_path": "primer/open_project/page_header/
|
|
20581
|
-
"name": "
|
|
20593
|
+
"preview_path": "primer/open_project/page_header/tab_nav",
|
|
20594
|
+
"name": "tab_nav",
|
|
20582
20595
|
"snapshot": "false",
|
|
20583
20596
|
"skip_rules": {
|
|
20584
20597
|
"wont_fix": [
|
|
@@ -20590,8 +20603,21 @@
|
|
|
20590
20603
|
}
|
|
20591
20604
|
},
|
|
20592
20605
|
{
|
|
20593
|
-
"preview_path": "primer/open_project/page_header/
|
|
20594
|
-
"name": "
|
|
20606
|
+
"preview_path": "primer/open_project/page_header/segmented_control",
|
|
20607
|
+
"name": "segmented_control",
|
|
20608
|
+
"snapshot": "false",
|
|
20609
|
+
"skip_rules": {
|
|
20610
|
+
"wont_fix": [
|
|
20611
|
+
"region"
|
|
20612
|
+
],
|
|
20613
|
+
"will_fix": [
|
|
20614
|
+
"color-contrast"
|
|
20615
|
+
]
|
|
20616
|
+
}
|
|
20617
|
+
},
|
|
20618
|
+
{
|
|
20619
|
+
"preview_path": "primer/open_project/page_header/segmented_control_mobile_icons",
|
|
20620
|
+
"name": "segmented_control_mobile_icons",
|
|
20595
20621
|
"snapshot": "false",
|
|
20596
20622
|
"skip_rules": {
|
|
20597
20623
|
"wont_fix": [
|
data/static/previews.json
CHANGED
|
@@ -6184,8 +6184,8 @@
|
|
|
6184
6184
|
}
|
|
6185
6185
|
},
|
|
6186
6186
|
{
|
|
6187
|
-
"preview_path": "primer/open_project/page_header/
|
|
6188
|
-
"name": "
|
|
6187
|
+
"preview_path": "primer/open_project/page_header/without_breadcrumbs",
|
|
6188
|
+
"name": "without_breadcrumbs",
|
|
6189
6189
|
"snapshot": "false",
|
|
6190
6190
|
"skip_rules": {
|
|
6191
6191
|
"wont_fix": [
|
|
@@ -6197,8 +6197,8 @@
|
|
|
6197
6197
|
}
|
|
6198
6198
|
},
|
|
6199
6199
|
{
|
|
6200
|
-
"preview_path": "primer/open_project/page_header/
|
|
6201
|
-
"name": "
|
|
6200
|
+
"preview_path": "primer/open_project/page_header/skip_breadcrumb_item",
|
|
6201
|
+
"name": "skip_breadcrumb_item",
|
|
6202
6202
|
"snapshot": "false",
|
|
6203
6203
|
"skip_rules": {
|
|
6204
6204
|
"wont_fix": [
|
|
@@ -6210,8 +6210,8 @@
|
|
|
6210
6210
|
}
|
|
6211
6211
|
},
|
|
6212
6212
|
{
|
|
6213
|
-
"preview_path": "primer/open_project/page_header/
|
|
6214
|
-
"name": "
|
|
6213
|
+
"preview_path": "primer/open_project/page_header/tab_nav",
|
|
6214
|
+
"name": "tab_nav",
|
|
6215
6215
|
"snapshot": "false",
|
|
6216
6216
|
"skip_rules": {
|
|
6217
6217
|
"wont_fix": [
|
|
@@ -6223,8 +6223,21 @@
|
|
|
6223
6223
|
}
|
|
6224
6224
|
},
|
|
6225
6225
|
{
|
|
6226
|
-
"preview_path": "primer/open_project/page_header/
|
|
6227
|
-
"name": "
|
|
6226
|
+
"preview_path": "primer/open_project/page_header/segmented_control",
|
|
6227
|
+
"name": "segmented_control",
|
|
6228
|
+
"snapshot": "false",
|
|
6229
|
+
"skip_rules": {
|
|
6230
|
+
"wont_fix": [
|
|
6231
|
+
"region"
|
|
6232
|
+
],
|
|
6233
|
+
"will_fix": [
|
|
6234
|
+
"color-contrast"
|
|
6235
|
+
]
|
|
6236
|
+
}
|
|
6237
|
+
},
|
|
6238
|
+
{
|
|
6239
|
+
"preview_path": "primer/open_project/page_header/segmented_control_mobile_icons",
|
|
6240
|
+
"name": "segmented_control_mobile_icons",
|
|
6228
6241
|
"snapshot": "false",
|
|
6229
6242
|
"skip_rules": {
|
|
6230
6243
|
"wont_fix": [
|
|
@@ -7248,6 +7261,19 @@
|
|
|
7248
7261
|
]
|
|
7249
7262
|
}
|
|
7250
7263
|
},
|
|
7264
|
+
{
|
|
7265
|
+
"preview_path": "primer/alpha/select_panel/select_panel_with_icon_button",
|
|
7266
|
+
"name": "select_panel_with_icon_button",
|
|
7267
|
+
"snapshot": "interactive",
|
|
7268
|
+
"skip_rules": {
|
|
7269
|
+
"wont_fix": [
|
|
7270
|
+
"region"
|
|
7271
|
+
],
|
|
7272
|
+
"will_fix": [
|
|
7273
|
+
"color-contrast"
|
|
7274
|
+
]
|
|
7275
|
+
}
|
|
7276
|
+
},
|
|
7251
7277
|
{
|
|
7252
7278
|
"preview_path": "primer/alpha/select_panel/with_leading_icons",
|
|
7253
7279
|
"name": "with_leading_icons",
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: openproject-primer_view_components
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.77.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- GitHub Open Source
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2025-
|
|
12
|
+
date: 2025-11-05 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: actionview
|
|
@@ -45,14 +45,14 @@ dependencies:
|
|
|
45
45
|
requirements:
|
|
46
46
|
- - ">="
|
|
47
47
|
- !ruby/object:Gem::Version
|
|
48
|
-
version: 19.
|
|
48
|
+
version: 19.30.1
|
|
49
49
|
type: :runtime
|
|
50
50
|
prerelease: false
|
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
|
52
52
|
requirements:
|
|
53
53
|
- - ">="
|
|
54
54
|
- !ruby/object:Gem::Version
|
|
55
|
-
version: 19.
|
|
55
|
+
version: 19.30.1
|
|
56
56
|
- !ruby/object:Gem::Dependency
|
|
57
57
|
name: view_component
|
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1055,6 +1055,7 @@ files:
|
|
|
1055
1055
|
- previews/primer/alpha/select_panel_preview/remote_fetch_initial_failure.html.erb
|
|
1056
1056
|
- previews/primer/alpha/select_panel_preview/remote_fetch_no_results.html.erb
|
|
1057
1057
|
- previews/primer/alpha/select_panel_preview/scroll_container.html.erb
|
|
1058
|
+
- previews/primer/alpha/select_panel_preview/select_panel_with_icon_button.html.erb
|
|
1058
1059
|
- previews/primer/alpha/select_panel_preview/single_select.html.erb
|
|
1059
1060
|
- previews/primer/alpha/select_panel_preview/single_select_form.html.erb
|
|
1060
1061
|
- previews/primer/alpha/select_panel_preview/with_avatar_items.html.erb
|