Use OpPrimer::AttributesHelper so a caller-supplied data-controller is
concatenated with the required filter--filters-form controller instead of
being overwritten. The wrapper spec now asserts both controllers survive.
Stimulus supports multiple controllers on one element, but Primer's
`merge_data` is not controller-aware and silently drops a caller's
`data-controller` when a component merges in its own. Treat `controller`
as a plural data attribute so the values concatenate instead.
Uses `ConditionalWrapper` to eliminate template duplication in the
`wrap_with_controller` branch, and `merge_data` from
`Primer::AttributesHelper` for Stimulus data attributes.
https://community.openproject.org/wp/OP-19415
Replaces `Filters::FilterForm` (an `ApplicationForm` subclass) with
`Filters::FilterFormComponent` (an `ApplicationComponent`). The old form
overrode `:nodoc:` Primer hooks (`before_render`, `perform_render`) and
read semi-public ivars (`@builder`, `@view_context`). The new component
receives the builder as an explicit keyword arg and uses a standard ERB
template, reducing Primer internal coupling from five semi-public APIs
to one (`FormList`).
https://community.openproject.org/wp/OP-19415
Refactors the custom `:list`/`:list_item` selectors onto CAS's
`add_role_selector` and drops the now-native `Capybara::Node::Simple#role`
hack. `:list_item` resolves the listitem role, so specs matching
non-listitem `<li>` are updated (`have_row` for the custom field table,
presentation dividers via CSS).
CAS 0.16 also resolves role selectors by computed role and accessible
name, which our CSS-styled tables and Primer menus do not expose through
plain markup. Affected feature specs switch to robust locators:
Capybara's `:table_row`, the FullCalendar `data-date`, and the action
menu's real accessible name ("Edit status").
The `:columnheader` `colindex` filter lost its off-by-one offset and now
uses the true 1-based `th` position. Also fixes Webhooks `RowComponent`
spec capitalization.
* Create a new dialog component for non-working days
* Change the non-working days component
* Add feature spec
* Fix reload after canceling the action
* preserve submitted form data for confirmation, and simplify cancel handling
* Change header text
* Remove the typescript unnecessary codes and listening to a form submit and call update on confirm changes
Extracts a shared `ExpandableTextComponent` for truncation with
`HiddenTextExpander`, preserving caller classes and data attributes.
Implements it on on the permissions report and workflows matrices so
expanded labels keep the ellipsis aligned with the first line.
https://community.openproject.org/wp/75275
Allows headers to receive title arguments so callers can pass system
arguments (including semantic attributes) to rendered headings.
https://community.openproject.org/wp/72945
Wraps header descriptions in Primer text so callers can pass system
arguments for layout while keeping muted text as the default.
https://community.openproject.org/wp/72945
https://community.openproject.org/wp/74555
- Use work_package variable name instead of story in Backlogs::WorkPackagesController
- Remove baclog_bucket flag from work packages controller spec
Allow BorderBoxList headers to override their vertical padding while
keeping row padding inherited from the underlying BorderBox.
Use spacious header padding for Backlogs lists that keep condensed rows,
and expose the option in Lookbook previews for review.
https://community.openproject.org/wp/72945
Adds `scheme: :transparent` to BorderBoxListComponent with CSS overrides
for transparent header background and no separator line. Backlogs
callers adopt the transparent scheme.
https://community.openproject.org/wp/72945
Render plain BorderBoxList headers by default while keeping the
CollapsibleHeader toggle available behind an explicit option. Align the
plain header branch with CollapsibleHeader markup so later Backlogs
header restyling can reuse the same structure.
Add interactive mode for dynamic BorderBox lists and enable it for
Backlogs lists. Generic lists stay quiet by default while Backlogs
updates remain announced.
Adds a `count_label:` keyword to `Header` that defaults to
`I18n.t(:label_x_items, count:)` and always sets `aria-live:
polite` on the counter badge. Callers no longer need to wire
up aria attributes manually. Uses `merge_aria` so additional
caller-provided aria attributes are preserved.
https://community.openproject.org/wp/74684
Introduces a shared BorderBox-backed list component and moves the
Backlogs-specific work package card list into the Backlogs module.
Wires Backlogs callers to the new component API, keeps specialized
card rendering behind an item factory hook, and replaces old OpPrimer
work-package card list coverage with focused component specs.
https://community.openproject.org/wp/74684
The idea is to reuse them in the wikis module and probably elsewhere
as well, offering a similar look & feel.
The ReportComponent has been lightened for this, though. Previously
it included the page layout and a default to render when there was
no report. Now it only focusses on rendering an actual report and
leaves the rest up to the including component or page.