Make url clickable
This commit is contained in:
parent
4fdf90fb38
commit
b22e5fae81
|
@ -34,7 +34,8 @@
|
||||||
coordinates: [23.44, 1.23]
|
coordinates: [23.44, 1.23]
|
||||||
},
|
},
|
||||||
}},
|
}},
|
||||||
'string': 'Hello World'
|
'string': 'Hello World',
|
||||||
|
'url': 'https://jsoneditoronline.org'
|
||||||
}
|
}
|
||||||
|
|
||||||
let uniDirectionalValue = 'test uni directional flow in Svelte';
|
let uniDirectionalValue = 'test uni directional flow in Svelte';
|
||||||
|
|
|
@ -40,9 +40,10 @@
|
||||||
|
|
||||||
$: escapedKey = escapeHTML(key, escapeUnicode)
|
$: escapedKey = escapeHTML(key, escapeUnicode)
|
||||||
$: escapedValue = escapeHTML(value, escapeUnicode)
|
$: escapedValue = escapeHTML(value, escapeUnicode)
|
||||||
|
$: valueIsUrl = isUrl(value)
|
||||||
|
|
||||||
$: valueClass = classnames('value', type, {
|
$: valueClass = classnames('value', type, {
|
||||||
url: isUrl(value),
|
url: valueIsUrl,
|
||||||
empty: escapedValue.length === 0,
|
empty: escapedValue.length === 0,
|
||||||
search: searchResult
|
search: searchResult
|
||||||
? !!searchResult[SEARCH_VALUE]
|
? !!searchResult[SEARCH_VALUE]
|
||||||
|
@ -64,6 +65,24 @@
|
||||||
onChangeValue(newValue, key)
|
onChangeValue(newValue, key)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleValueClick (event) {
|
||||||
|
if (valueIsUrl && event.ctrlKey) {
|
||||||
|
event.preventDefault()
|
||||||
|
event.stopPropagation()
|
||||||
|
|
||||||
|
window.open(value, '_blank')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleValueKeyDown (event) {
|
||||||
|
if (event.ctrlKey && event.key === 'Enter') {
|
||||||
|
event.preventDefault()
|
||||||
|
event.stopPropagation()
|
||||||
|
|
||||||
|
window.open(value, '_blank')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function handleChangeKey (newChildKey, oldChildKey) {
|
function handleChangeKey (newChildKey, oldChildKey) {
|
||||||
if (type === 'object') {
|
if (type === 'object') {
|
||||||
const updatedValue = {}
|
const updatedValue = {}
|
||||||
|
@ -364,6 +383,9 @@
|
||||||
class={valueClass}
|
class={valueClass}
|
||||||
contenteditable="true"
|
contenteditable="true"
|
||||||
on:input={handleValueInput}
|
on:input={handleValueInput}
|
||||||
|
on:click={handleValueClick}
|
||||||
|
on:keydown={handleValueKeyDown}
|
||||||
|
title={valueIsUrl ? 'Ctrl+Click or Ctrl+Enter to open url in new window' : null}
|
||||||
>
|
>
|
||||||
{escapedValue}
|
{escapedValue}
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue