mirror of
https://github.com/Lissy93/dashy.git
synced 2025-07-28 16:14:33 +02:00
✨ Adds option to copy item URL to clipboard
This commit is contained in:
parent
967daac95d
commit
45700d7875
@ -141,7 +141,7 @@ export default {
|
|||||||
hyperLinkHref() {
|
hyperLinkHref() {
|
||||||
const nothing = '#';
|
const nothing = '#';
|
||||||
if (this.isEditMode) return nothing;
|
if (this.isEditMode) return nothing;
|
||||||
const noAnchorNeeded = ['modal', 'workspace'];
|
const noAnchorNeeded = ['modal', 'workspace', 'clipboard'];
|
||||||
return noAnchorNeeded.includes(this.accumulatedTarget) ? nothing : this.url;
|
return noAnchorNeeded.includes(this.accumulatedTarget) ? nothing : this.url;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -174,6 +174,9 @@ export default {
|
|||||||
this.$emit('triggerModal', this.url);
|
this.$emit('triggerModal', this.url);
|
||||||
} else if (this.accumulatedTarget === 'workspace') {
|
} else if (this.accumulatedTarget === 'workspace') {
|
||||||
router.push({ name: 'workspace', query: { url: this.url } });
|
router.push({ name: 'workspace', query: { url: this.url } });
|
||||||
|
} else if (this.accumulatedTarget === 'clipboard') {
|
||||||
|
navigator.clipboard.writeText(this.url);
|
||||||
|
this.$toasted.show(this.$t('context-menus.item.copied-toast'));
|
||||||
} else {
|
} else {
|
||||||
this.$emit('itemClicked');
|
this.$emit('itemClicked');
|
||||||
}
|
}
|
||||||
@ -226,6 +229,7 @@ export default {
|
|||||||
case 'top': return '"\\f102"';
|
case 'top': return '"\\f102"';
|
||||||
case 'modal': return '"\\f2d0"';
|
case 'modal': return '"\\f2d0"';
|
||||||
case 'workspace': return '"\\f0b1"';
|
case 'workspace': return '"\\f0b1"';
|
||||||
|
case 'clipboard': return '"\\f0ea"';
|
||||||
default: return '"\\f054"';
|
default: return '"\\f054"';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -279,6 +283,10 @@ export default {
|
|||||||
case 'workspace':
|
case 'workspace':
|
||||||
router.push({ name: 'workspace', query: { url } });
|
router.push({ name: 'workspace', query: { url } });
|
||||||
break;
|
break;
|
||||||
|
case 'clipboard':
|
||||||
|
navigator.clipboard.writeText(url);
|
||||||
|
this.$toasted.show(this.$t('context-menus.item.copied-toast'));
|
||||||
|
break;
|
||||||
default: window.open(url, '_blank');
|
default: window.open(url, '_blank');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -546,4 +554,7 @@ a.item.is-edit-mode {
|
|||||||
.disabled-link {
|
.disabled-link {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
.tooltip.item-description-tooltip {
|
||||||
|
z-index: 7;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -23,6 +23,10 @@
|
|||||||
<WorkspaceOpenIcon />
|
<WorkspaceOpenIcon />
|
||||||
<span>{{ $t('context-menus.item.workspace') }}</span>
|
<span>{{ $t('context-menus.item.workspace') }}</span>
|
||||||
</li>
|
</li>
|
||||||
|
<li @click="launch('clipboard')">
|
||||||
|
<ClipboardOpenIcon />
|
||||||
|
<span>{{ $t('context-menus.item.clipboard') }}</span>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<!-- Edit Options -->
|
<!-- Edit Options -->
|
||||||
<ul class="menu-section">
|
<ul class="menu-section">
|
||||||
@ -55,6 +59,7 @@ import SameTabOpenIcon from '@/assets/interface-icons/open-current-tab.svg';
|
|||||||
import NewTabOpenIcon from '@/assets/interface-icons/open-new-tab.svg';
|
import NewTabOpenIcon from '@/assets/interface-icons/open-new-tab.svg';
|
||||||
import IframeOpenIcon from '@/assets/interface-icons/open-iframe.svg';
|
import IframeOpenIcon from '@/assets/interface-icons/open-iframe.svg';
|
||||||
import WorkspaceOpenIcon from '@/assets/interface-icons/open-workspace.svg';
|
import WorkspaceOpenIcon from '@/assets/interface-icons/open-workspace.svg';
|
||||||
|
import ClipboardOpenIcon from '@/assets/interface-icons/open-clipboard.svg';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ContextMenu',
|
name: 'ContextMenu',
|
||||||
@ -66,6 +71,7 @@ export default {
|
|||||||
NewTabOpenIcon,
|
NewTabOpenIcon,
|
||||||
IframeOpenIcon,
|
IframeOpenIcon,
|
||||||
WorkspaceOpenIcon,
|
WorkspaceOpenIcon,
|
||||||
|
ClipboardOpenIcon,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
posX: Number, // The X coordinate for positioning
|
posX: Number, // The X coordinate for positioning
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<WorkspaceOpenIcon v-else-if="openingMethod === 'workspace'" />
|
<WorkspaceOpenIcon v-else-if="openingMethod === 'workspace'" />
|
||||||
<ParentOpenIcon v-else-if="openingMethod === 'parent'" />
|
<ParentOpenIcon v-else-if="openingMethod === 'parent'" />
|
||||||
<TopOpenIcon v-else-if="openingMethod === 'top'" />
|
<TopOpenIcon v-else-if="openingMethod === 'top'" />
|
||||||
|
<ClipboardOpenIcon v-else-if="openingMethod === 'clipboard'" />
|
||||||
<UnknownIcon v-else />
|
<UnknownIcon v-else />
|
||||||
</div>
|
</div>
|
||||||
<div v-if="hotkey" :class="`hotkey-denominator ${makeClass(position, isSmall, isTransparent)}`">
|
<div v-if="hotkey" :class="`hotkey-denominator ${makeClass(position, isSmall, isTransparent)}`">
|
||||||
@ -25,6 +26,7 @@ import IframeOpenIcon from '@/assets/interface-icons/open-iframe.svg';
|
|||||||
import WorkspaceOpenIcon from '@/assets/interface-icons/open-workspace.svg';
|
import WorkspaceOpenIcon from '@/assets/interface-icons/open-workspace.svg';
|
||||||
import ParentOpenIcon from '@/assets/interface-icons/open-parent.svg';
|
import ParentOpenIcon from '@/assets/interface-icons/open-parent.svg';
|
||||||
import TopOpenIcon from '@/assets/interface-icons/open-top.svg';
|
import TopOpenIcon from '@/assets/interface-icons/open-top.svg';
|
||||||
|
import ClipboardOpenIcon from '@/assets/interface-icons/open-clipboard.svg';
|
||||||
import UnknownIcon from '@/assets/interface-icons/unknown-icon.svg';
|
import UnknownIcon from '@/assets/interface-icons/unknown-icon.svg';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@ -52,6 +54,7 @@ export default {
|
|||||||
WorkspaceOpenIcon,
|
WorkspaceOpenIcon,
|
||||||
ParentOpenIcon,
|
ParentOpenIcon,
|
||||||
TopOpenIcon,
|
TopOpenIcon,
|
||||||
|
ClipboardOpenIcon,
|
||||||
UnknownIcon,
|
UnknownIcon,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user