diff --git a/app/.eslintrc.js b/app/.eslintrc.js index 29b594145a..99482da666 100644 --- a/app/.eslintrc.js +++ b/app/.eslintrc.js @@ -17,6 +17,7 @@ module.exports = { '@typescript-eslint/no-use-before-define': 0, '@typescript-eslint/ban-ts-ignore': 0, '@typescript-eslint/no-explicit-any': 0, + 'vue/valid-v-slot': 0, 'comma-dangle': [ 'error', { diff --git a/app/src/composables/use-item/use-item.ts b/app/src/composables/use-item/use-item.ts index dc1a141f65..d9d3d31fba 100644 --- a/app/src/composables/use-item/use-item.ts +++ b/app/src/composables/use-item/use-item.ts @@ -17,7 +17,7 @@ export function useItem(collection: Ref, primaryKey: Ref primaryKey.value === '+'); const isBatch = computed(() => typeof primaryKey.value === 'string' && primaryKey.value.includes(',')); - const isSingle = computed(() => !!collectionInfo.value?.system?.single); + const isSingle = computed(() => !!collectionInfo.value?.meta?.single); const endpoint = computed(() => { return collection.value.startsWith('directus_') diff --git a/app/src/directives/tooltip/tooltip.ts b/app/src/directives/tooltip/tooltip.ts index ffeab207de..9a4265b13d 100644 --- a/app/src/directives/tooltip/tooltip.ts +++ b/app/src/directives/tooltip/tooltip.ts @@ -4,20 +4,31 @@ import { nanoid } from 'nanoid'; const handlers: Record void> = {}; + +function bind(element: HTMLElement, binding: DirectiveBinding) { + element.dataset.tooltip = nanoid(); + handlers[element.dataset.tooltip] = createEnterHandler(element, binding); + element.addEventListener('mouseenter', handlers[element.dataset.tooltip]); + element.addEventListener('mouseleave', onLeaveTooltip); +} + +function unbind(element: HTMLElement) { + element.removeEventListener('mouseenter', handlers[element.dataset.tooltip as string]); + element.removeEventListener('mouseleave', onLeaveTooltip); + clearTimeout(tooltipTimer); + const tooltip = getTooltip(); + tooltip.classList.remove('visible'); + delete handlers[element.dataset.tooltip as string]; +} + const Tooltip: DirectiveOptions = { - bind(element, binding) { - element.dataset.tooltip = nanoid(); - handlers[element.dataset.tooltip] = createEnterHandler(element, binding); - element.addEventListener('mouseenter', handlers[element.dataset.tooltip]); - element.addEventListener('mouseleave', onLeaveTooltip); - }, - unbind(element) { - element.removeEventListener('mouseenter', handlers[element.dataset.tooltip as string]); - element.removeEventListener('mouseleave', onLeaveTooltip); - clearTimeout(tooltipTimer); - const tooltip = getTooltip(); - tooltip.classList.remove('visible'); - delete handlers[element.dataset.tooltip as string]; + bind, unbind, + update(element, binding) { + if (binding.value && !binding.oldValue) { + bind(element, binding); + } else if (!binding.value && binding.oldValue) { + unbind(element); + } } }; diff --git a/app/src/interfaces/many-to-one/many-to-one.vue b/app/src/interfaces/many-to-one/many-to-one.vue index 63a010e750..985f885671 100644 --- a/app/src/interfaces/many-to-one/many-to-one.vue +++ b/app/src/interfaces/many-to-one/many-to-one.vue @@ -361,7 +361,7 @@ export default defineComponent({ function usePreview() { const displayTemplate = computed(() => { if (props.template !== null) return props.template; - return collectionInfo.value?.system?.display_template; + return collectionInfo.value?.meta?.display_template; }); const requiredFields = computed(() => { diff --git a/app/src/lang/en-US/index.json b/app/src/lang/en-US/index.json index 640e36db78..979f669f6e 100644 --- a/app/src/lang/en-US/index.json +++ b/app/src/lang/en-US/index.json @@ -10,6 +10,10 @@ "only_show_the_file_extension": "Only show the file extension", "textarea": "Textarea", + "add_preset": "Add Preset", + "add_role": "Add Role", + "add_user": "Add User", + "uploaded_by": "Uploaded By", "hide_field_on_detail": "Hide Field on Detail", "show_field_on_detail": "Show Field on Detail", diff --git a/app/src/modules/collections/composables/use-navigation.ts b/app/src/modules/collections/composables/use-navigation.ts index 039d603c17..4607d21ee5 100644 --- a/app/src/modules/collections/composables/use-navigation.ts +++ b/app/src/modules/collections/composables/use-navigation.ts @@ -38,7 +38,7 @@ export default function useNavigation() { const navItem: NavItem = { collection: collection, name: collectionInfo.name, - icon: collectionInfo.system?.icon || 'box', + icon: collectionInfo.meta?.icon || 'box', to: `/collections/${collection}`, }; @@ -57,7 +57,7 @@ export default function useNavigation() { const navItem: NavItem = { collection: collection.collection, name: collection.name, - icon: collection.system?.icon || 'box', + icon: collection.meta?.icon || 'box', to: `/collections/${collection.collection}`, }; diff --git a/app/src/modules/collections/routes/browse-or-detail/browse-or-detail.vue b/app/src/modules/collections/routes/browse-or-detail/browse-or-detail.vue index 4029d54ab5..4027ec97c7 100644 --- a/app/src/modules/collections/routes/browse-or-detail/browse-or-detail.vue +++ b/app/src/modules/collections/routes/browse-or-detail/browse-or-detail.vue @@ -26,7 +26,7 @@ export default defineComponent({ const isSingle = computed(() => { const collectionInfo = collectionsStore.getCollection(props.collection); - return !!collectionInfo?.system?.single === true; + return !!collectionInfo?.meta?.single === true; }); return { component, isSingle }; diff --git a/app/src/modules/collections/routes/browse/browse.vue b/app/src/modules/collections/routes/browse/browse.vue index 4669e533b4..6e41911f3d 100644 --- a/app/src/modules/collections/routes/browse/browse.vue +++ b/app/src/modules/collections/routes/browse/browse.vue @@ -48,7 +48,7 @@ @@ -67,11 +67,11 @@ - + - + diff --git a/app/src/modules/collections/routes/detail/detail.vue b/app/src/modules/collections/routes/detail/detail.vue index 8ab1973cd7..3f5dfbeeef 100644 --- a/app/src/modules/collections/routes/detail/detail.vue +++ b/app/src/modules/collections/routes/detail/detail.vue @@ -105,7 +105,7 @@ diff --git a/app/src/modules/files/routes/detail/detail.vue b/app/src/modules/files/routes/detail/detail.vue index 78350eda55..95aa77f6c4 100644 --- a/app/src/modules/files/routes/detail/detail.vue +++ b/app/src/modules/files/routes/detail/detail.vue @@ -14,7 +14,7 @@ diff --git a/app/src/modules/settings/routes/roles/browse/browse.vue b/app/src/modules/settings/routes/roles/browse/browse.vue index 382a4caba1..3effc589b2 100644 --- a/app/src/modules/settings/routes/roles/browse/browse.vue +++ b/app/src/modules/settings/routes/roles/browse/browse.vue @@ -9,7 +9,7 @@ diff --git a/app/src/modules/settings/routes/roles/detail/detail.vue b/app/src/modules/settings/routes/roles/detail/detail.vue index 54e693da4f..1a763d9f07 100644 --- a/app/src/modules/settings/routes/roles/detail/detail.vue +++ b/app/src/modules/settings/routes/roles/detail/detail.vue @@ -9,7 +9,7 @@