followItem navigates only work package results, and displayId is defined
on WorkPackageResource rather than the HalResource base. Guarding on the
concrete type guarantees the displayId access at runtime instead of
leaning on union narrowing to reach it.
capybara_accessible_selectors 0.16 resolves role selectors such as
`:columnheader` by the computed accessible name. In a browser that name
folds in the CSS `text-transform: uppercase` styling and the column
action-menu trigger text, so `have_columnheader("Subject")` no longer
matches a header whose accessible name resolves to "SUBJECT Open menu".
Sets an explicit `aria-label` equal to the plain caption on each header
cell, in both the server-rendered tables and the work package table, so
the accessible name is the column title alone. This also improves screen
reader output, which previously announced the uppercased text and the
menu label.
The header comment claimed search did not rely on acts_as_event; the
server-rendered search results page builds its work package links through
WorkPackage#event_url, so the note now reflects that search and atom feeds
both depend on it while the Activities subsystem uses its own providers.
Type the followItem spec helper from the method signature instead of
unknown, so the test states the argument contract explicitly.
Build the work package fixture from WorkPackageResource with a HAL
$source instead of stubbing the displayId getter, so followItem is
verified through the production getter. Adds a classic-mode case proving
the numeric fallback drives the link, and an instanceof assertion
confirming the fixture takes the HAL branch.
The autocomplete dropdown's visible result link and its click handler
navigated to the numeric work package id, so opening a suggestion landed
on /work_packages/<id> while keyboard selection already used the semantic
identifier. Route both through displayId so the link target matches the
identifier shown in the result row.
Rework the followItem unit spec to drive the method with plain typed
stubs instead of jasmine.createSpy, and have the wpPath stub return a
fragment so the window.location assignment does not navigate the runner.
Removes unnecessary type assertions that ESLint now detects after
library version drift. Adds eslint-disable for three casts that are
still required for type safety.
* 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
* Add footer component for widget box
* Add footer component to the widget box as a slot
* Change projects widget to show the favorite projects
* Fix failing test
* Change the subitems widget
* Change the costs and budgets widgets
* Change the meeting widget
* Change the WPs widget in version
* Change memebers widget in project overview
* Change the favorite projects widget in my page
# Conflicts:
# frontend/src/app/shared/components/grids/widgets/project-favorites/widget-project-favorites.component.ts
* Add the widget box to the lookbook
* Add footer for members widget in dashboard
* Fix members widget capability check
* Add feature spec for favorites projects in my page
* Remove committed demo project gitlink
* Remove temporary body variables from the costs and budgets widget templates
* Remove the scroll for favorites widget
* Remove scrollbar for members and favorite projects widgets
* Change projects block to favorite projects
* Refine feature specs
* Fix the widget footer styles globally
* Rename the component name from project favorites to favorite projects
* Rename the test selector for project name
* Move widget content inside the body
* grid widgets stretch their content area so widget footers stay pinned to the bottom
* Ensure frontend-rendered grid widgets keep their turbo-loaded content in the widget flex layout so server-rendered footers stay pinned to the bottom
Adds explicit type assertions for `this.resource` when passed to
`isNewResource()`, which expects `{ id: string | null }`. The base
`Field.resource` is typed as `any`, causing two `no-unsafe-argument`
errors.
Replaces global lodash (`_`) calls with native Array methods (`map`,
`find`, `filter`, `forEach`, `slice`) and adds proper type annotations
to eliminate all 38 `@typescript-eslint/no-unsafe-*` and
`no-explicit-any` errors. Introduces a local `QueryFormSchema`
intersection type so schema attribute access is statically typed.
Apply safe TypeScript ESLint cleanups and trailing whitespace fixes
across frontend files.
Keep DOM lookups typed and nullable when generic autocorrection would
otherwise assert through missing elements or erase intended guards.