PUI-33 fix(composables): guard record changes inside the same component #108

Merged
pienter merged 1 commit from feature/PUI-33-useunsavedchanges-misses-record-changes-inside-the into main 2026-09-22 10:29:35 +00:00
Owner

useUnsavedChanges registered only onBeforeRouteLeave, so moving from /blog/1/edit to /blog/2/edit dropped a dirty draft without asking. It now also registers onBeforeRouteUpdate; an optional sameRecord(to, from) predicate (default: equal route params) keeps query and hash changes silent. Test: packages/ui/tests/unsaved-changes.test.ts.

Checks: bun test, typecheck, lint, format:check, build:vue.

Refs: PUI-33

useUnsavedChanges registered only onBeforeRouteLeave, so moving from /blog/1/edit to /blog/2/edit dropped a dirty draft without asking. It now also registers onBeforeRouteUpdate; an optional sameRecord(to, from) predicate (default: equal route params) keeps query and hash changes silent. Test: packages/ui/tests/unsaved-changes.test.ts. Checks: bun test, typecheck, lint, format:check, build:vue. Refs: PUI-33
fix(composables): guard record changes inside the same component
All checks were successful
ci / typecheck (pull_request) Successful in 47s
ci / release (pull_request) Has been skipped
ci / lint (pull_request) Successful in 55s
ci / format (pull_request) Successful in 58s
cc9827e12e
useUnsavedChanges registered only onBeforeRouteLeave, so moving from one
record to another in a reused component dropped a dirty draft without
asking. It now also registers onBeforeRouteUpdate; an optional sameRecord
predicate (default: equal route params) keeps query and hash changes silent.

Refs: PUI-33
pienter deleted branch feature/PUI-33-useunsavedchanges-misses-record-changes-inside-the 2026-09-22 10:29:35 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
pienter/ui!108
No description provided.