зеркало из https://github.com/nextcloud/text.git
Merge pull request #2668 from nextcloud/fix/link_handling
Link handling fixes
This commit is contained in:
Коммит
99ed401d8b
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@nextcloud/text",
|
||||
"description": "Collaborative document editing",
|
||||
"version": "25.0.0-alpha.7",
|
||||
"version": "25.0.0-alpha.8",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Julius Härtl",
|
||||
|
|
|
@ -43,6 +43,7 @@ export default {
|
|||
link: {
|
||||
onClick: (event, attrs) => {
|
||||
this.$emit('click-link', event, attrs)
|
||||
return true
|
||||
},
|
||||
},
|
||||
}),
|
||||
|
@ -57,6 +58,22 @@ export default {
|
|||
},
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.$el.addEventListener('click', this.preventOpeningLinks, true)
|
||||
},
|
||||
|
||||
unmounted() {
|
||||
this.$el.removeEventListener('click', this.preventOpeningLinks, true)
|
||||
},
|
||||
|
||||
methods: {
|
||||
preventOpeningLinks(event) {
|
||||
// We use custom onClick handler only for left clicks
|
||||
if (event.target.closest('a') && event.button === 0 && !event.ctrlKey) {
|
||||
event.preventDefault()
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
|
@ -80,28 +80,25 @@ const parseHref = function(dom) {
|
|||
|
||||
const openLink = function(event, _attrs) {
|
||||
const linkElement = event.target.closest('a')
|
||||
event.stopPropagation()
|
||||
const htmlHref = linkElement.href
|
||||
if (event.button === 0 && !event.ctrlKey && htmlHref.startsWith(window.location.origin)) {
|
||||
const query = OC.parseQueryString(htmlHref)
|
||||
const fragment = OC.parseQueryString(htmlHref.split('#').pop())
|
||||
if (query.dir && fragment.relPath) {
|
||||
const filename = fragment.relPath.split('/').pop()
|
||||
const path = `${query.dir}/${filename}`
|
||||
document.title = `${filename} - ${OC.theme.title}`
|
||||
if (window.location.pathname.match(/apps\/files\/$/)) {
|
||||
// The files app still lacks a popState handler
|
||||
// to allow for using the back button
|
||||
// OC.Util.History.pushState('', htmlHref)
|
||||
}
|
||||
OCA.Viewer.open({ path })
|
||||
return
|
||||
}
|
||||
if (query.fileId) {
|
||||
// open the direct file link
|
||||
window.open(generateUrl(`/f/${query.fileId}`))
|
||||
return
|
||||
const query = OC.parseQueryString(htmlHref)
|
||||
const fragment = OC.parseQueryString(htmlHref.split('#').pop())
|
||||
if (query.dir && fragment.relPath) {
|
||||
const filename = fragment.relPath.split('/').pop()
|
||||
const path = `${query.dir}/${filename}`
|
||||
document.title = `${filename} - ${OC.theme.title}`
|
||||
if (window.location.pathname.match(/apps\/files\/$/)) {
|
||||
// The files app still lacks a popState handler
|
||||
// to allow for using the back button
|
||||
// OC.Util.History.pushState('', htmlHref)
|
||||
}
|
||||
OCA.Viewer.open({ path })
|
||||
return
|
||||
}
|
||||
if (query.fileId) {
|
||||
// open the direct file link
|
||||
window.open(generateUrl(`/f/${query.fileId}`))
|
||||
return
|
||||
}
|
||||
if (!markdownit.validateLink(htmlHref)) {
|
||||
console.error('Invalid link', htmlHref)
|
||||
|
|
|
@ -15,7 +15,12 @@ const clickHandler = ({ editor, type, onClick }) => {
|
|||
console.debug(link)
|
||||
return false
|
||||
}
|
||||
return onClick?.(event, link.attrs)
|
||||
|
||||
// We use custom onClick handler only for left clicks
|
||||
if (event.button === 0 && !event.ctrlKey) {
|
||||
event.stopPropagation()
|
||||
return onClick?.(event, link.attrs)
|
||||
}
|
||||
},
|
||||
},
|
||||
})
|
||||
|
|
Загрузка…
Ссылка в новой задаче