Title: Fix interceptLinks() browser behavior and createTemplate() validation by Copilot · Pull Request #30 · bQuery/bQuery · GitHub
Open Graph Title: Fix interceptLinks() browser behavior and createTemplate() validation by Copilot · Pull Request #30 · bQuery/bQuery
X Title: Fix interceptLinks() browser behavior and createTemplate() validation by Copilot · Pull Request #30 · bQuery/bQuery
Description: Addresses review feedback from PR #16 on browser behavior handling and template validation.
Changes
interceptLinks() browser behavior
Guard left-click interception to respect modifier keys (Ctrl/Cmd/Shift/Alt for new tabs)
Skip non-MouseEvent, already-prevented events, and non-left-clicks (button !== 0)
Preserves middle-click and right-click native behavior
createTemplate() validation
Validate exactly one root element, rejecting templates with multiple roots
Clear error message shows actual element count when validation fails
insertContent() beforebegin reversal
Reviewed suggestion to add beforebegin to reversal logic
Current implementation is correct: insertAdjacentElement('beforebegin', el) naturally maintains order
Only afterbegin and afterend require reversal (already implemented)
Test Coverage
Added comprehensive test coverage for all implemented features:
interceptLinks() browser behavior tests (7 tests):
Middle-click (button === 1) not intercepted
Right-click (button === 2) not intercepted
Ctrl+click not intercepted
Cmd+click (metaKey) not intercepted
Shift+click not intercepted
Alt+click not intercepted
Already prevented events skipped
createTemplate() validation tests (2 tests):
Multiple root elements rejected with clear error message
Single root element with whitespace properly accepted
// Before: intercepted all clicks, breaking Ctrl+click, middle-click
interceptLinks(document.body);
// After: respects browser conventions
if (e.button !== 0) return; // Allow middle/right-click
if (e.ctrlKey || e.metaKey) return; // Allow new tab
// Before: silently accepted multiple root elements
createTemplate(`
Open Graph Description: Addresses review feedback from PR #16 on browser behavior handling and template validation. Changes interceptLinks() browser behavior Guard left-click interception to respect modifier keys (Ctrl/C...
X Description: Addresses review feedback from PR #16 on browser behavior handling and template validation. Changes interceptLinks() browser behavior Guard left-click interception to respect modifier keys (Ctrl/C...
Opengraph URL: https://github.com/bQuery/bQuery/pull/30
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:2e0d458a-e423-4b7d-51f0-f55f768dcc34 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | D2BC:1528C6:E4AD96:14066F3:6A4E916C |
| html-safe-nonce | ca305176c1a15d119e0d5e96395e1afb11b1073d949c69fec953df0e61d7d087 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMkJDOjE1MjhDNjpFNEFEOTY6MTQwNjZGMzo2QTRFOTE2QyIsInZpc2l0b3JfaWQiOiIzNzA3ODExMjY4MzMxMTU1MDAiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 3fd4ca49f61512e309367ef930bb8b937fa8ad1d7301dd34feb7a4c7d0abe72a |
| hovercard-subject-tag | pull_request:3211973952 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/bQuery/bQuery/pull/30/files |
| twitter:image | https://avatars.githubusercontent.com/in/1143301?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/in/1143301?s=400&v=4 |
| og:image:alt | Addresses review feedback from PR #16 on browser behavior handling and template validation. Changes interceptLinks() browser behavior Guard left-click interception to respect modifier keys (Ctrl/C... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 41b6ab3ba6d20a71766ac245b5a4a94c6fc672a9cd4da7d44c1b33ab8bf6a21c |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/bQuery/bQuery git https://github.com/bQuery/bQuery.git |
| octolytics-dimension-user_id | 256381806 |
| octolytics-dimension-user_login | bQuery |
| octolytics-dimension-repository_id | 1139284244 |
| octolytics-dimension-repository_nwo | bQuery/bQuery |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1139284244 |
| octolytics-dimension-repository_network_root_nwo | bQuery/bQuery |
| turbo-body-classes | logged-out env-production page-responsive full-width |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | e6a744804e8e70f97b4d5a18a94dcc63db22f97a |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width