openproject-primer_view_components 0.77.0 → 0.78.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 +10 -0
- 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/open_project/page_header.css +1 -1
- data/app/components/primer/open_project/page_header.css.map +1 -1
- data/app/components/primer/open_project/page_header.pcss +1 -1
- data/app/components/primer/open_project/page_header.rb +11 -2
- data/lib/primer/view_components/version.rb +1 -1
- data/previews/primer/open_project/page_header_preview.rb +13 -0
- data/static/constants.json +1 -0
- data/static/info_arch.json +13 -0
- data/static/previews.json +13 -0
- metadata +2 -2
|
@@ -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}@media screen and (min-width:543.98px){.PageHeader--noBreadcrumb .PageHeader-contextBar{display:none}}.PageHeader--noBreadcrumb .PageHeader-titleBar{height:var(--control-small-size)}
|
|
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{line-height:var(--control-small-size)}
|
|
@@ -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,CAGA,uCACE,iDACE,YACF,CACF,CAGA,+CACE,
|
|
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,qCACF","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 line-height: var(--control-small-size);\n}"]}
|
|
@@ -23,6 +23,7 @@ module Primer
|
|
|
23
23
|
DEFAULT_LEADING_ACTION_DISPLAY = [:none, :flex].freeze
|
|
24
24
|
DEFAULT_BREADCRUMBS_DISPLAY = [:none, :flex].freeze
|
|
25
25
|
DEFAULT_PARENT_LINK_DISPLAY = [:block, :none].freeze
|
|
26
|
+
BREADCRUMB_TRUNCATE_AT = 200
|
|
26
27
|
|
|
27
28
|
STATE_DEFAULT = :show
|
|
28
29
|
STATE_EDIT = :edit
|
|
@@ -222,9 +223,17 @@ module Primer
|
|
|
222
223
|
render(Primer::Beta::Breadcrumbs.new(**system_arguments)) do |breadcrumbs|
|
|
223
224
|
items.each do |item|
|
|
224
225
|
if item.is_a?(String)
|
|
225
|
-
breadcrumbs.with_item(href: "#", font_weight: selected_item_font_weight)
|
|
226
|
+
breadcrumbs.with_item(href: "#", font_weight: selected_item_font_weight) do
|
|
227
|
+
render(Primer::Beta::Truncate.new) do |truncate|
|
|
228
|
+
truncate.with_item(max_width: BREADCRUMB_TRUNCATE_AT) { item }
|
|
229
|
+
end
|
|
230
|
+
end
|
|
226
231
|
else
|
|
227
|
-
breadcrumbs.with_item(href: item[:href], target: "_top")
|
|
232
|
+
breadcrumbs.with_item(href: item[:href], target: "_top") do
|
|
233
|
+
render(Primer::Beta::Truncate.new) do |truncate|
|
|
234
|
+
truncate.with_item(max_width: BREADCRUMB_TRUNCATE_AT) { item[:text] }
|
|
235
|
+
end
|
|
236
|
+
end
|
|
228
237
|
end
|
|
229
238
|
end
|
|
230
239
|
end
|
|
@@ -191,6 +191,19 @@ module Primer
|
|
|
191
191
|
end
|
|
192
192
|
end
|
|
193
193
|
|
|
194
|
+
# @label With truncated breadcrumbs
|
|
195
|
+
# Long breadcrumb elements are truncated after 200px
|
|
196
|
+
def truncated_breadcrumbs
|
|
197
|
+
breadcrumb_items = [{ href: "/foo", text: "OpenProject" },
|
|
198
|
+
{ href: "/bar", text: "Stream Dream team" },
|
|
199
|
+
{ href: "/baz", text: "A very long sub project that will be truncated" },
|
|
200
|
+
"Hello"]
|
|
201
|
+
render(Primer::OpenProject::PageHeader.new) do |header|
|
|
202
|
+
header.with_title { "A title" }
|
|
203
|
+
header.with_breadcrumbs(breadcrumb_items, selected_item_font_weight: :normal)
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
|
|
194
207
|
# @label Without breadcrumbs
|
|
195
208
|
# A PageHeader example that renders without breadcrumbs.
|
|
196
209
|
# This should only be done for *entry pages* (such as overview pages).
|
data/static/constants.json
CHANGED
data/static/info_arch.json
CHANGED
|
@@ -20563,6 +20563,19 @@
|
|
|
20563
20563
|
]
|
|
20564
20564
|
}
|
|
20565
20565
|
},
|
|
20566
|
+
{
|
|
20567
|
+
"preview_path": "primer/open_project/page_header/truncated_breadcrumbs",
|
|
20568
|
+
"name": "truncated_breadcrumbs",
|
|
20569
|
+
"snapshot": "false",
|
|
20570
|
+
"skip_rules": {
|
|
20571
|
+
"wont_fix": [
|
|
20572
|
+
"region"
|
|
20573
|
+
],
|
|
20574
|
+
"will_fix": [
|
|
20575
|
+
"color-contrast"
|
|
20576
|
+
]
|
|
20577
|
+
}
|
|
20578
|
+
},
|
|
20566
20579
|
{
|
|
20567
20580
|
"preview_path": "primer/open_project/page_header/without_breadcrumbs",
|
|
20568
20581
|
"name": "without_breadcrumbs",
|
data/static/previews.json
CHANGED
|
@@ -6183,6 +6183,19 @@
|
|
|
6183
6183
|
]
|
|
6184
6184
|
}
|
|
6185
6185
|
},
|
|
6186
|
+
{
|
|
6187
|
+
"preview_path": "primer/open_project/page_header/truncated_breadcrumbs",
|
|
6188
|
+
"name": "truncated_breadcrumbs",
|
|
6189
|
+
"snapshot": "false",
|
|
6190
|
+
"skip_rules": {
|
|
6191
|
+
"wont_fix": [
|
|
6192
|
+
"region"
|
|
6193
|
+
],
|
|
6194
|
+
"will_fix": [
|
|
6195
|
+
"color-contrast"
|
|
6196
|
+
]
|
|
6197
|
+
}
|
|
6198
|
+
},
|
|
6186
6199
|
{
|
|
6187
6200
|
"preview_path": "primer/open_project/page_header/without_breadcrumbs",
|
|
6188
6201
|
"name": "without_breadcrumbs",
|
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.78.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-11-
|
|
12
|
+
date: 2025-11-13 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: actionview
|