mirror of
https://github.com/directus/directus.git
synced 2026-04-25 03:00:53 -04:00
Feat: allow ctrl click to open new tab on tabular (#9115)
* feat: allow ctrl click to open new tab on tabular * support metaKey + click
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
'--table-row-height': height + 2 + 'px',
|
||||
'--table-row-line-height': 1,
|
||||
}"
|
||||
@click="$emit('click')"
|
||||
@click="$emit('click', $event)"
|
||||
>
|
||||
<td v-if="showManualSort" class="manual cell" @click.stop>
|
||||
<v-icon name="drag_handle" class="drag-handle" :class="{ 'sorted-manually': sortedManually }" />
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
:sorted-manually="internalSort.by === manualSortKey"
|
||||
:has-click-listener="!disabled && clickable"
|
||||
:height="rowHeight"
|
||||
@click="clickable ? $emit('click:row', element) : null"
|
||||
@click="clickable ? $emit('click:row', { item: element, event: $event }) : null"
|
||||
@item-selected="
|
||||
onItemSelected({
|
||||
item: element,
|
||||
|
||||
@@ -259,7 +259,7 @@ export default defineLayout<LayoutOptions, LayoutQuery>({
|
||||
getFieldDisplay,
|
||||
};
|
||||
|
||||
function onRowClick(item: Item) {
|
||||
function onRowClick({ item, event }: { item: Item; event: PointerEvent }) {
|
||||
if (props.readonly === true || !primaryKeyField.value) return;
|
||||
|
||||
const primaryKey = item[primaryKeyField.value.field];
|
||||
@@ -271,7 +271,10 @@ export default defineLayout<LayoutOptions, LayoutQuery>({
|
||||
selection.value = selection.value.filter((item) => item !== primaryKey);
|
||||
}
|
||||
} else {
|
||||
router.push(`/collections/${collection.value}/${encodeURIComponent(primaryKey)}`);
|
||||
const next = router.resolve(`/collections/${collection.value}/${encodeURIComponent(primaryKey)}`);
|
||||
|
||||
if (event.ctrlKey || event.metaKey) window.open(next.href, '_blank');
|
||||
else router.push(next);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -166,7 +166,7 @@ export default defineComponent({
|
||||
md,
|
||||
};
|
||||
|
||||
function navigateToDashboard(dashboard: Dashboard) {
|
||||
function navigateToDashboard({ item: dashboard }: { item: Dashboard }) {
|
||||
router.push(`/insights/${dashboard.id}`);
|
||||
}
|
||||
|
||||
|
||||
@@ -252,7 +252,7 @@ export default defineComponent({
|
||||
return { headers };
|
||||
}
|
||||
|
||||
function onRowClick(item: Preset) {
|
||||
function onRowClick({ item }: { item: Preset }) {
|
||||
if (selection.value.length === 0) {
|
||||
router.push(`/settings/presets/${item.id}`);
|
||||
} else {
|
||||
|
||||
@@ -155,7 +155,7 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
function navigateToRole(item: Role) {
|
||||
function navigateToRole({ item }: { item: Role }) {
|
||||
router.push(`/settings/roles/${item.id}`);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -136,15 +136,15 @@ export default defineComponent({
|
||||
|
||||
#### Events
|
||||
|
||||
| Event | Description | Value |
|
||||
| ---------------- | --------------------------------------------------- | ------------------------------- |
|
||||
| `update:sort` | `v-model` event for `sort` prop | `{ by: string, desc: boolean }` |
|
||||
| `click:row` | When a row has been clicked | |
|
||||
| `update:items` | When changes to the items where made | |
|
||||
| `manual-sort` | When a user manually sorts the items | |
|
||||
| `update:headers` | `v-model` event for `headers` prop or `HeaderRaw[]` | |
|
||||
| `item-selected` | Emitted when an item is selected or deselected | `{ item: any, value: boolean }` |
|
||||
| `select` | Emitted when selected items change | `any[]` |
|
||||
| Event | Description | Value |
|
||||
| ---------------- | --------------------------------------------------- | ----------------------------------- |
|
||||
| `update:sort` | `v-model` event for `sort` prop | `{ by: string, desc: boolean }` |
|
||||
| `click:row` | When a row has been clicked | `{item: any, event: PointerEvent }` |
|
||||
| `update:items` | When changes to the items where made | |
|
||||
| `manual-sort` | When a user manually sorts the items | |
|
||||
| `update:headers` | `v-model` event for `headers` prop or `HeaderRaw[]` | |
|
||||
| `item-selected` | Emitted when an item is selected or deselected | `{ item: any, value: boolean }` |
|
||||
| `select` | Emitted when selected items change | `any[]` |
|
||||
|
||||
#### Slots
|
||||
|
||||
|
||||
Reference in New Issue
Block a user