Try <a>'ing links - #1193
Open
AbelLykens wants to merge 1 commit into
Open
Conversation
A column can now carry a link function, and its cells then render as a router link. Use it for the domain name, so that a domain can be opened in a new tab with the middle mouse button, from the context menu, or with a modifier key, and so that the browser shows its address. The rest of the row keeps taking one to the same place on click. Fixes desec-io#1192 Co-authored-by: Peter Thomassen <peter@desec.io>
Member
|
Thank you! I've reworked this a bit as the Vue 3 upgrade which happened in the meantime required tackling this a bit differently (but kept your approach). |
Member
|
Hmm, that didn't work as I had hoped. Opening a domain link in a new tab lands on the login page because the auth token isn't shared with the new tab. I thought the "Remember me during this browser session" checkbox at login controls this, but turns out that's only about reloading in the same tab. So, how to get this working? Options:
@AbelLykens You seemed to find it important that there are actual links. Is there a specific reason for this implementation choice, or would you be fine with any implementation as long as the functionality is provided? Also, @nils-wisiol. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hope this works, for #1192.
CrudList.vue — The column template now checks for a column.link function. If present, the column content is wrapped in a (renders as ). The @click.native.stop prevents the click from bubbling up to the row's @click:row handler, so regular clicks navigate via the link, and ctrl-click / middle-click / right-click all work natively. Columns without link render exactly as before.
CrudListDomain.vue — Added link: (item) => ({name: 'domain', params: {domain: item.name}}) to the name column. This generates the /domains/example.com URL as a proper href.
The existing handleRowClick is kept, so clicking anywhere else on the row (e.g. the "Published" column) still navigates as before. But now the domain name is a real link with full browser link semantics: right-click menu, open in new tab, ctrl/cmd-click, middle-click, and URL preview in the status bar.