diff --git a/.changeset/twelve-owls-tickle.md b/.changeset/twelve-owls-tickle.md new file mode 100644 index 0000000000..9a02ade13d --- /dev/null +++ b/.changeset/twelve-owls-tickle.md @@ -0,0 +1,5 @@ +--- +'@directus/app': patch +--- + +Fixed "Auto Refresh" for Kanban and Calendar layouts diff --git a/app/src/layouts/calendar/calendar.vue b/app/src/layouts/calendar/calendar.vue index 165bea0883..a9098fbabe 100644 --- a/app/src/layouts/calendar/calendar.vue +++ b/app/src/layouts/calendar/calendar.vue @@ -10,6 +10,8 @@ interface Props { createCalendar: (calendarElement: HTMLElement) => void; destroyCalendar: () => void; itemCount?: number; + resetPresetAndRefresh: () => Promise; + error?: any; } const props = withDefaults(defineProps(), { @@ -43,7 +45,8 @@ export default defineComponent({ {{ t('dataset_too_large_currently_showing_n_items', { n: n(10000) }) }} -
+
+
diff --git a/app/src/layouts/calendar/index.ts b/app/src/layouts/calendar/index.ts index f2106a4253..50aa41b049 100644 --- a/app/src/layouts/calendar/index.ts +++ b/app/src/layouts/calendar/index.ts @@ -254,9 +254,20 @@ export default defineLayout({ showingCount, createCalendar, destroyCalendar, + resetPresetAndRefresh, + refresh, download, }; + async function resetPresetAndRefresh() { + await props?.resetPreset?.(); + refresh(); + } + + function refresh() { + getItems(); + } + function download() { if (!collection.value) return; saveAsCSV(collection.value, queryFields.value, items.value); diff --git a/app/src/layouts/cards/cards.vue b/app/src/layouts/cards/cards.vue index 88be448a54..24636ee660 100644 --- a/app/src/layouts/cards/cards.vue +++ b/app/src/layouts/cards/cards.vue @@ -138,18 +138,7 @@ watch(innerWidth, (value) => {
- - {{ t('unexpected_error_copy') }} - - - - + @@ -198,8 +187,4 @@ watch(innerWidth, (value) => { } } } - -.reset-preset { - margin-top: 24px; -} diff --git a/app/src/layouts/kanban/index.ts b/app/src/layouts/kanban/index.ts index 9fd0d3710d..7af8eb2250 100644 --- a/app/src/layouts/kanban/index.ts +++ b/app/src/layouts/kanban/index.ts @@ -127,20 +127,24 @@ export default defineLayout({ groupTitleFields, groupsCollection, changeGroupSort, + getGroups, addGroup, editGroup, deleteGroup, isRelational, } = useGrouping(); - const { items, loading, error, totalPages, itemCount, totalCount, changeManualSort } = useItems(collection, { - sort, - limit, - page, - fields, - filter, - search, - }); + const { items, loading, error, totalPages, itemCount, totalCount, changeManualSort, getItems } = useItems( + collection, + { + sort, + limit, + page, + fields, + filter, + search, + }, + ); const limitWarning = computed(() => items.value.length >= limit.value); @@ -250,6 +254,8 @@ export default defineLayout({ showUngrouped, limitWarning, userFieldType, + resetPresetAndRefresh, + refresh, }; async function change(group: Group, event: ChangeEvent) { @@ -306,6 +312,17 @@ export default defineLayout({ return url; } + async function resetPresetAndRefresh() { + await props?.resetPreset?.(); + refresh(); + } + + function refresh() { + getItems(); + // potentially reload the related group items, if the group field is relational + if (isRelational.value) getGroups(); + } + function useLayoutOptions() { const groupField = createViewOption('groupField', fieldGroups.value.group[0]?.field ?? null); const groupTitle = createViewOption('groupTitle', null); @@ -450,6 +467,7 @@ export default defineLayout({ groupsPrimaryKeyField, groupsSortField, groupsCollection, + getGroups, addGroup, editGroup, deleteGroup, diff --git a/app/src/layouts/kanban/kanban.vue b/app/src/layouts/kanban/kanban.vue index 7e4c02a0cd..bdbc119e78 100644 --- a/app/src/layouts/kanban/kanban.vue +++ b/app/src/layouts/kanban/kanban.vue @@ -32,6 +32,8 @@ const props = withDefaults( userField?: string | null; groupsSortField?: string | null; layoutOptions: LayoutOptions; + resetPresetAndRefresh: () => Promise; + error?: any; }>(), { collection: null, @@ -90,7 +92,7 @@ const textFieldConfiguration = computed(() => { - @@ -199,13 +198,14 @@ const textFieldConfiguration = computed(() => { +