Skip to content
Merged
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
7bf6dbf
Release Tracking (#4062)
primer[bot] May 11, 2026
c2ab715
Bump css_parser from 1.21.1 to 1.22.0 in /demo (#4064)
dependabot[bot] May 13, 2026
f72f909
Bump css_parser from 1.21.1 to 1.22.0 (#4065)
dependabot[bot] May 13, 2026
7e11aa6
Bump actions/github-script from 8 to 9 (#4060)
dependabot[bot] May 13, 2026
a2ceeb6
Bump octicons from 19.23.1 to 19.25.0 in /demo (#4046)
dependabot[bot] May 13, 2026
a6702f3
Bump jwt from 2.10.1 to 3.2.0 in /demo (#4068)
dependabot[bot] May 20, 2026
24b8fbf
Revert Dialog body scroll-lock styling from broad `:has(...)` to expl…
Copilot May 26, 2026
2bb06fc
Bump cssnano from 7.1.7 to 8.0.1 (#4087)
dependabot[bot] Jun 2, 2026
4079bff
Bump @primer/behaviors from 1.10.2 to 1.10.3 in the production-depend…
dependabot[bot] Jun 2, 2026
b5c7757
Bump vite_rails from 3.10.0 to 3.11.0 (#4080)
dependabot[bot] Jun 2, 2026
8a64849
Bump the all-demo group in /demo with 2 updates (#4076)
dependabot[bot] Jun 2, 2026
5478572
Bump playwright from 1.59.1 to 1.60.0 (#4083)
dependabot[bot] Jun 2, 2026
ebd72c2
Bump yard from 0.9.43 to 0.9.44 in the development-dependencies group…
dependabot[bot] Jun 2, 2026
138191b
Bump spring from 4.4.2 to 4.6.0 in /demo (#4084)
dependabot[bot] Jun 2, 2026
bbbcc97
Bump view_component from 4.9.0 to 4.11.0 in /demo (#4081)
dependabot[bot] Jun 2, 2026
fa50c23
Bump @primer/primitives from 11.7.1 to 11.9.0 in /demo (#4074)
dependabot[bot] Jun 2, 2026
960c97d
Bump puma from 8.0.1 to 8.0.2 in the production-dependencies group ac…
dependabot[bot] Jun 3, 2026
c3c267d
Bump the development-dependencies group across 1 directory with 3 upd…
dependabot[bot] Jun 3, 2026
32a1aef
Bump @primer/css from 22.1.1 to 22.2.0 in /demo (#4072)
dependabot[bot] Jun 8, 2026
b6a8c9d
Bump bootsnap from 1.23.0 to 1.24.6 (#4079)
dependabot[bot] Jun 8, 2026
5bac433
Bump octicons from 19.25.0 to 19.28.0 in /demo (#4086)
dependabot[bot] Jun 8, 2026
a7b8a5e
Bump @primer/primitives from 11.7.1 to 11.9.0 (#4085)
dependabot[bot] Jun 10, 2026
8ee4e8d
Bump the all-demo group across 1 directory with 2 updates (#4071)
dependabot[bot] Jun 10, 2026
2082014
Bump vite_rails from 3.10.0 to 3.11.0 in /demo (#4078)
dependabot[bot] Jun 10, 2026
ff6cc0d
Accept keyword arguments in `render_in` methods (#4091)
issyl0 Jun 12, 2026
8e701a1
Update Node version to 24 in CI workflows (#4094)
Copilot Jun 15, 2026
3ad026e
Update @github/clipboard-copy-element to v1.3.1 (#4093)
jonrohan Jun 15, 2026
6573e3d
Merge branch 'bump/primer-upstream-ref' into bump/primer-upstream
myabc Jul 9, 2026
31beb66
Generating static files
openprojectci Jul 9, 2026
9fa9eac
Generating component snapshots
openproject-primer-view-components[bot] Jul 9, 2026
3f4fe8d
Accept keyword arguments in page header render_in
myabc Jul 9, 2026
178d3b1
Correct clipboard-copy-element changeset version
myabc Jul 9, 2026
60a9902
Generating component snapshots
myabc Jul 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/soft-stamps-camp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@openproject/primer-view-components": patch
---

Accept keyword arguments in `render_in` methods
Comment thread
myabc marked this conversation as resolved.
5 changes: 5 additions & 0 deletions .changeset/thirty-cougars-matter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@openproject/primer-view-components": patch
---

Revert Dialog body scroll-lock styling from broad `:has(...)` to explicit body classes
5 changes: 5 additions & 0 deletions .changeset/update-clipboard-copy-element.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@openproject/primer-view-components": patch
---

Update `@github/clipboard-copy-element` to v1.3.1
Comment thread
myabc marked this conversation as resolved.
Outdated
2 changes: 1 addition & 1 deletion .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:

- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
with:
node-version: 20
node-version: 24
cache: 'npm'
- run: |
npm ci
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
bundler-cache: true
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
with:
node-version: 20
node-version: 24
cache: "npm"
- name: Create .gem credentials
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/static-files.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
bundler-cache: true
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
with:
node-version: 20
node-version: 24
cache: 'npm'
- name: Build
run: npm ci
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-accessibility.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
bundler-cache: true
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
with:
node-version: 20
node-version: 24
cache: "npm"
cache-dependency-path: |
package-lock.json
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-components.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
cache-version: ${{ matrix.rails_version }}-${{ matrix.ruby_version }}
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
with:
node-version: 20
node-version: 24
cache: "npm"
Comment thread
myabc marked this conversation as resolved.
- name: Build
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-lib.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
cache-version: ${{ matrix.rails_version }}-${{ matrix.ruby_version }}
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
with:
node-version: 20
node-version: 24
cache: "npm"
- name: Build
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-selectors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
with:
node-version: 20
node-version: 24
cache: "npm"
- name: NPM Build
run: npm ci
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-system.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
bundler-cache: true
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
with:
node-version: 20
node-version: 24
cache: "npm"
cache-dependency-path: |
package-lock.json
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-visual.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
bundler-cache: true
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
with:
node-version: 20
node-version: 24
cache: "npm"
cache-dependency-path: |
package-lock.json
Expand Down
6 changes: 3 additions & 3 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ else
end

# Use Puma as the app server
gem "puma", "~> 8.0.1"
gem "puma", "~> 8.0.2"

# Reduces boot times through caching; required in config/boot.rb
gem "bootsnap", ">= 1.4.2", require: false
Expand All @@ -47,7 +47,7 @@ gem "kramdown", "~> 2.5"
gem "sourcemap", "~> 0.1"

gem "cssbundling-rails", "~> 1.4"
gem "vite_rails", "~> 3.0"
gem "vite_rails", "~> 3.11"

group :test do
gem "webmock"
Expand Down Expand Up @@ -78,5 +78,5 @@ group :development do
gem "sprockets-rails"
gem "thor"
gem "timecop"
gem "yard", "~> 0.9.43"
gem "yard", "~> 0.9.44"
end
14 changes: 7 additions & 7 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -187,14 +187,14 @@ GEM
date
stringio
public_suffix (7.0.5)
puma (8.0.1)
puma (8.0.2)
nio4r (~> 2.0)
racc (1.8.1)
rack (3.2.6)
rack-cors (3.0.0)
logger
rack (>= 3.0.14)
rack-proxy (0.7.7)
rack-proxy (0.8.3)
rack
rack-session (2.1.2)
base64 (>= 0.1.0)
Expand Down Expand Up @@ -310,7 +310,7 @@ GEM
actionview (>= 7.1.0)
activesupport (>= 7.1.0)
concurrent-ruby (~> 1)
vite_rails (3.10.0)
vite_rails (3.11.1)
railties (>= 5.1, < 9)
vite_ruby (~> 3.0, >= 3.2.2)
vite_ruby (3.10.2)
Expand All @@ -331,7 +331,7 @@ GEM
websocket-extensions (0.1.5)
xpath (3.2.0)
nokogiri (~> 1.8)
yard (0.9.43)
yard (0.9.44)
zeitwerk (2.7.5)

PLATFORMS
Expand Down Expand Up @@ -365,7 +365,7 @@ DEPENDENCIES
minitest (~> 5.0)
mocha
openproject-primer_view_components!
puma (~> 8.0.1)
puma (~> 8.0.2)
rack-cors
railties (= 8.0.2)
rake (~> 13.3)
Expand All @@ -383,9 +383,9 @@ DEPENDENCIES
thor
timecop
view_component (= 4.9.0)
vite_rails (~> 3.0)
vite_rails (~> 3.11)
webmock
yard (~> 0.9.43)
yard (~> 0.9.44)

BUNDLED WITH
2.5.5
5 changes: 4 additions & 1 deletion app/components/primer/alpha/dialog.pcss
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,11 @@
syntax: "<length>";
}

body:has(dialog:modal.Overlay--disableScroll) {
body.has-modal {
padding-right: var(--dialog-scrollgutter) !important;
}

body.has-modal-disable-scroll {
overflow: hidden !important;
}

Expand Down
2 changes: 1 addition & 1 deletion app/components/primer/alpha/tree_view/sub_tree_node.rb
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ def initialize(
)
end

def render_in(*args, &block)
def render_in(*args, **_kwargs, &block)
super.tap do
# check this _after_ rendering so @sub_tree's slots are defined
if @node.select_variant != :none && @sub_tree.defer?
Expand Down
2 changes: 1 addition & 1 deletion app/components/primer/alpha/tree_view/visual.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def initialize(id:, visual:, label: nil)
@label = label
end

def render_in(_view_context, &block)
def render_in(_view_context, **_kwargs, &block)
block&.call(@visual)
super
end
Expand Down
2 changes: 1 addition & 1 deletion app/components/primer/beta/button_group.rb
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def initialize(menu_arguments: {}, button_arguments: {})
@button = @menu.with_show_button(icon: "triangle-down", **button_arguments)
end

def render_in(view_context, &block)
def render_in(view_context, **_kwargs, &block)
super(view_context) do
block.call(@menu, @button)
end
Expand Down
17 changes: 16 additions & 1 deletion app/components/primer/dialog_helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@ function setScrollGutter(doc: Document) {
doc.body.style.setProperty('--dialog-scrollgutter', `${window.innerWidth - doc.body.clientWidth}px`)
}

function updateBodyModalClasses(doc: Document) {
doc.body.classList.toggle('has-modal', Boolean(doc.querySelector('dialog[open]')))
doc.body.classList.toggle(
'has-modal-disable-scroll',
Boolean(doc.querySelector('dialog[open].Overlay--disableScroll')),
)
}
Comment thread
myabc marked this conversation as resolved.

function dialogInvokerButtonHandler(event: Event) {
const target = event.target as HTMLElement
const button = target?.closest('button')
Expand Down Expand Up @@ -69,6 +77,8 @@ function dialogInvokerButtonHandler(event: Event) {
{once: true},
)
}

updateBodyModalClasses(dialog.ownerDocument)
}
}

Expand All @@ -77,6 +87,7 @@ function dialogInvokerButtonHandler(event: Event) {
const dialog = document.getElementById(dialogId)
if (dialog instanceof HTMLDialogElement && dialog.open) {
dialog.close()
updateBodyModalClasses(dialog.ownerDocument)
}
}
}
Expand All @@ -91,6 +102,7 @@ export class DialogHelperElement extends HTMLElement {
const {signal} = (this.#abortController = new AbortController())
document.addEventListener('click', dialogInvokerButtonHandler, true)
document.addEventListener('click', this, {signal})
this.dialog?.addEventListener('close', () => updateBodyModalClasses(this.dialog!.ownerDocument), {signal})
new MutationObserver(records => {
for (const record of records) {
if (record.target === this.dialog) {
Expand All @@ -107,14 +119,17 @@ export class DialogHelperElement extends HTMLElement {

#handleDialogOpenAttribute() {
if (!this.dialog) return
const {ownerDocument} = this.dialog
// We don't want to show the Dialog component as non-modal
if (this.dialog.matches('[open]:not(:modal)')) {
// eslint-disable-next-line no-restricted-syntax
this.dialog.addEventListener('close', e => e.stopImmediatePropagation(), {once: true})
this.dialog.close()
setScrollGutter(this.dialog.ownerDocument)
setScrollGutter(ownerDocument)
this.dialog.showModal()
}

updateBodyModalClasses(ownerDocument)
}

handleEvent(event: MouseEvent) {
Expand Down
2 changes: 1 addition & 1 deletion app/lib/primer/forms/acts_as_component.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ module ActsAsComponent
module InstanceMethods
delegate :render, :content_tag, :output_buffer, :capture, to: :@view_context

def render_in(view_context, &block)
def render_in(view_context, **_kwargs, &block)
@view_context = view_context
before_render
perform_render(&block)
Expand Down
2 changes: 1 addition & 1 deletion app/lib/primer/forms/toggle_switch_form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def initialize(**system_arguments)
# assumes the presence of a builder so we create our own here. A builder
# cannot be constructed without a corresponding view context, which is why
# we have to override render_in and can't create it in the initializer.
def render_in(view_context, &block)
def render_in(view_context, **_kwargs, &block)
@builder = Primer::Forms::Builder.new(
nil, nil, view_context, {}
)
Expand Down
6 changes: 3 additions & 3 deletions demo/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ end
eval_gemfile "gemfiles/kuby.gemfile"

# Use Puma as the app server
gem "puma", "~> 8.0.1"
gem "puma", "~> 8.0.2"

# Reduces boot times through caching; required in config/boot.rb
gem "bootsnap", ">= 1.4.2", require: false
Expand All @@ -40,12 +40,12 @@ gem "openproject-primer_view_components", path: "../"
gem "view_component", "4.9.0"
gem "lookbook", "~> 2.3.14" unless rails_version.to_f < 7

gem "vite_rails", "~> 3.0"
gem "vite_rails", "~> 3.11"
gem "cssbundling-rails", "~> 1.4"

group :development do
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem "spring", "~> 4.4"
gem "spring", "~> 4.6"
gem "spring-watcher-listen", "~> 2.1"
gem "hotwire-livereload", "~> 2.1"

Expand Down
14 changes: 7 additions & 7 deletions demo/Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -280,14 +280,14 @@ GEM
date
stringio
public_suffix (7.0.2)
puma (8.0.1)
puma (8.0.2)
nio4r (~> 2.0)
racc (1.8.1)
rack (3.1.21)
rack-cors (3.0.0)
logger
rack (>= 3.0.14)
rack-proxy (0.7.7)
rack-proxy (0.8.3)
rack
rack-session (2.1.2)
base64 (>= 0.1.0)
Expand Down Expand Up @@ -337,7 +337,7 @@ GEM
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
spring (4.4.2)
spring (4.7.0)
spring-watcher-listen (2.1.0)
listen (>= 2.7, < 4.0)
spring (>= 4)
Expand Down Expand Up @@ -366,7 +366,7 @@ GEM
actionview (>= 7.1.0)
activesupport (>= 7.1.0)
concurrent-ruby (~> 1)
vite_rails (3.10.0)
vite_rails (3.11.1)
railties (>= 5.1, < 9)
vite_ruby (~> 3.0, >= 3.2.2)
vite_ruby (3.10.2)
Expand Down Expand Up @@ -411,18 +411,18 @@ DEPENDENCIES
lookbook (~> 2.3.14)
openproject-primer_view_components!
pry-byebug
puma (~> 8.0.1)
puma (~> 8.0.2)
rack-cors
railties (= 7.2.2.1)
rake (~> 13.4)
spring (~> 4.4)
spring (~> 4.6)
spring-watcher-listen (~> 2.1)
sprockets
sprockets-rails
stimulus-rails
turbo-rails
view_component (= 4.9.0)
vite_rails (~> 3.0)
vite_rails (~> 3.11)

BUNDLED WITH
2.5.5
Loading
Loading