nuxt-directus-sdk 3.0.4 → 3.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module.mjs CHANGED
@@ -4,7 +4,7 @@ import { generateTypes } from '../dist/runtime/types/index.js';
4
4
  import { useUrl } from '../dist/runtime/utils/index.js';
5
5
 
6
6
  const name = "nuxt-directus-sdk";
7
- const version = "3.0.4";
7
+ const version = "3.0.6";
8
8
 
9
9
  const configKey = "directus";
10
10
  const logger = useLogger("nuxt-directus-sdk");
@@ -1,11 +1,10 @@
1
1
  <script setup lang="ts" generic="T extends keyof DirectusSchema">
2
2
  import type { PrimaryKey } from '@directus/types'
3
3
  import { computed, useRoute } from '#imports'
4
- import { setAttr } from '@directus/visual-editing'
5
- import { isVisualEditorPage } from '../composables/preview'
4
+ import { apply, setAttr } from '@directus/visual-editing'
6
5
  import { Slot } from '../utils'
7
6
 
8
- type SingleDirectusCollection = DirectusSchema[T][0]
7
+ type SingleDirectusCollection = DirectusSchema[T] extends Array<any> ? DirectusSchema[T][0] : DirectusSchema[T]
9
8
  type FieldKey = keyof SingleDirectusCollection
10
9
 
11
10
  const props = defineProps<{
@@ -15,6 +14,15 @@ const props = defineProps<{
15
14
  mode?: 'drawer' | 'modal' | 'popover'
16
15
  }>()
17
16
 
17
+ const route = useRoute()
18
+ const config = useRuntimeConfig()
19
+
20
+ const element = ref()
21
+
22
+ const livePreview = computed(() => {
23
+ return route.query['visual-editor'] === 'true' || route.query['visual-editor'] === '1'
24
+ })
25
+
18
26
  const directusAttr = computed(() => {
19
27
  const data: Record<any, any> = {}
20
28
 
@@ -28,7 +36,7 @@ const directusAttr = computed(() => {
28
36
  })
29
37
 
30
38
  const attributes = computed(() => {
31
- if (!isVisualEditorPage(useRoute())) {
39
+ if (!livePreview.value) {
32
40
  return null
33
41
  }
34
42
 
@@ -36,10 +44,28 @@ const attributes = computed(() => {
36
44
  'data-directus': directusAttr.value,
37
45
  }
38
46
  })
47
+
48
+ onMounted(async () => {
49
+ await nextTick()
50
+
51
+ if (!livePreview.value || import.meta.server || !element.value) {
52
+ return
53
+ }
54
+
55
+ const applied = await apply({ directusUrl: config.public.directus.url })
56
+
57
+ if (!applied) {
58
+ return
59
+ }
60
+
61
+ applied.enable()
62
+
63
+ onBeforeUnmount(applied.remove)
64
+ })
39
65
  </script>
40
66
 
41
67
  <template>
42
- <Slot v-bind="attributes">
68
+ <Slot ref="element" v-bind="attributes">
43
69
  <slot />
44
70
  </Slot>
45
71
  </template>
@@ -1,8 +1,6 @@
1
- import { defineNuxtPlugin, refreshNuxtData, useRoute, useRuntimeConfig } from "#app";
2
- import { apply, remove } from "@directus/visual-editing";
1
+ import { defineNuxtPlugin, refreshNuxtData, useCookie, useRoute, useRuntimeConfig } from "#app";
3
2
  import { useDirectusAuth } from "./composables/auth.js";
4
3
  import { useDirectus } from "./composables/directus.js";
5
- import { isVisualEditorPage } from "./composables/preview.js";
6
4
  import { useDirectusTokens } from "./composables/tokens.js";
7
5
  export default defineNuxtPlugin(async (nuxtApp) => {
8
6
  const route = useRoute();
@@ -11,7 +9,6 @@ export default defineNuxtPlugin(async (nuxtApp) => {
11
9
  const directusAuth = useDirectusAuth();
12
10
  const preview = route.query.preview && route.query.preview === "true";
13
11
  const token = route.query.token;
14
- const livePreview = isVisualEditorPage(route);
15
12
  if (!tokens.directusUrl.value || tokens.directusUrl.value !== config.public.directus.url) {
16
13
  tokens.directusUrl.value = config.public.directus.url;
17
14
  if (tokens.accessToken.value || tokens.refreshToken.value) {
@@ -27,18 +24,6 @@ export default defineNuxtPlugin(async (nuxtApp) => {
27
24
  refreshNuxtData();
28
25
  });
29
26
  }
30
- if (livePreview) {
31
- nuxtApp.hook("page:start", async () => {
32
- if (import.meta.client) {
33
- remove();
34
- }
35
- });
36
- nuxtApp.hook("page:finish", () => {
37
- if (import.meta.client) {
38
- apply({ directusUrl: config.public.directus.url });
39
- }
40
- });
41
- }
42
27
  async function fetchUser() {
43
28
  if (config.public.directus.auth?.enabled ?? true)
44
29
  await directusAuth.readMe();
@@ -22,7 +22,7 @@ export async function generateTypes(options) {
22
22
  return;
23
23
  types += " ";
24
24
  types += field.field.includes("-") ? `"${field.field}"` : field.field;
25
- if (field.schema?.is_nullable)
25
+ if (field.schema?.is_nullable && field.meta?.required !== true)
26
26
  types += "?";
27
27
  types += ": ";
28
28
  types += getType(field);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-directus-sdk",
3
3
  "type": "module",
4
- "version": "3.0.4",
4
+ "version": "3.0.6",
5
5
  "description": "A Directus nuxt module that uses the Directus SDK",
6
6
  "author": "Matthew Rollinson <matt@rolley.io>",
7
7
  "license": "MIT",
@@ -1 +0,0 @@
1
- export declare function isVisualEditorPage(route: any): boolean;
@@ -1,3 +0,0 @@
1
- export function isVisualEditorPage(route) {
2
- return route.query["visual-editor"] === "true" || route.query["visual-editor"] === true || route.query["visual-editor"] === 1;
3
- }