nuxt-directus-sdk 3.0.7 → 3.0.9

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.d.mts CHANGED
@@ -20,6 +20,12 @@ interface ModuleOptions {
20
20
  * @default true
21
21
  */
22
22
  devtools?: boolean;
23
+ /**
24
+ * Add Directus Visual Editor capabilities
25
+ *
26
+ * @default true
27
+ */
28
+ visualEditor?: boolean;
23
29
  /**
24
30
  * Auth options
25
31
  */
package/dist/module.d.ts CHANGED
@@ -20,6 +20,12 @@ interface ModuleOptions {
20
20
  * @default true
21
21
  */
22
22
  devtools?: boolean;
23
+ /**
24
+ * Add Directus Visual Editor capabilities
25
+ *
26
+ * @default true
27
+ */
28
+ visualEditor?: boolean;
23
29
  /**
24
30
  * Auth options
25
31
  */
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.7";
7
+ const version = "3.0.9";
8
8
 
9
9
  const configKey = "directus";
10
10
  const logger = useLogger("nuxt-directus-sdk");
@@ -22,6 +22,7 @@ const module = defineNuxtModule({
22
22
  url: import.meta.env.DIRECTUS_URL ?? "",
23
23
  adminToken: import.meta.env.DIRECTUS_ADMIN_TOKEN ?? "",
24
24
  devtools: true,
25
+ visualEditor: true,
25
26
  types: {
26
27
  enabled: true,
27
28
  prefix: ""
@@ -1,7 +1,8 @@
1
1
  <script setup lang="ts" generic="T extends keyof DirectusSchema">
2
2
  import type { PrimaryKey } from '@directus/types'
3
- import { computed, useRoute, useRuntimeConfig } from '#imports'
4
- import { apply, setAttr } from '@directus/visual-editing'
3
+ import { computed } from '#imports'
4
+ import { setAttr } from '@directus/visual-editing'
5
+ import { useDirectusPreview } from '../composables/directus'
5
6
  import { Slot } from '../utils'
6
7
 
7
8
  type SingleDirectusCollection = DirectusSchema[T] extends Array<any> ? DirectusSchema[T][0] : DirectusSchema[T]
@@ -14,14 +15,7 @@ const props = defineProps<{
14
15
  mode?: 'drawer' | 'modal' | 'popover'
15
16
  }>()
16
17
 
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
- })
18
+ const directusPreview = useDirectusPreview()
25
19
 
26
20
  const directusAttr = computed(() => {
27
21
  const data: Record<any, any> = {}
@@ -36,7 +30,7 @@ const directusAttr = computed(() => {
36
30
  })
37
31
 
38
32
  const attributes = computed(() => {
39
- if (!livePreview.value) {
33
+ if (!directusPreview.value) {
40
34
  return null
41
35
  }
42
36
 
@@ -44,28 +38,10 @@ const attributes = computed(() => {
44
38
  'data-directus': directusAttr.value,
45
39
  }
46
40
  })
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
- })
65
41
  </script>
66
42
 
67
43
  <template>
68
- <Slot ref="element" v-bind="attributes">
44
+ <Slot v-bind="attributes">
69
45
  <slot />
70
46
  </Slot>
71
47
  </template>
@@ -1,2 +1,4 @@
1
+ import type { Ref } from '#imports';
2
+ export declare function useDirectusPreview(): Ref<boolean>;
1
3
  export declare function useDirectusUrl(path?: string): string;
2
4
  export declare function useDirectus(token?: string): import("@directus/sdk").DirectusClient<DirectusSchema> & import("@directus/sdk").AuthenticationClient<DirectusSchema> & import("@directus/sdk").RestClient<DirectusSchema> & import("@directus/sdk").WebSocketClient<DirectusSchema>;
@@ -2,6 +2,9 @@ import { useRuntimeConfig } from "#app";
2
2
  import { authentication, createDirectus, realtime, rest } from "@directus/sdk";
3
3
  import { useUrl } from "../utils/index.js";
4
4
  import { useDirectusTokens } from "./tokens.js";
5
+ export function useDirectusPreview() {
6
+ return useState("directus.preview", () => false);
7
+ }
5
8
  export function useDirectusUrl(path = "") {
6
9
  return useUrl(useRuntimeConfig().public.directus.url, path);
7
10
  }
@@ -1,14 +1,36 @@
1
1
  import { defineNuxtPlugin, refreshNuxtData, useCookie, useRoute, useRuntimeConfig } from "#app";
2
+ import { apply, remove } from "@directus/visual-editing";
2
3
  import { useDirectusAuth } from "./composables/auth.js";
3
- import { useDirectus } from "./composables/directus.js";
4
+ import { useDirectus, useDirectusPreview } from "./composables/directus.js";
4
5
  import { useDirectusTokens } from "./composables/tokens.js";
5
6
  export default defineNuxtPlugin(async (nuxtApp) => {
6
7
  const route = useRoute();
7
8
  const config = useRuntimeConfig();
8
9
  const tokens = useDirectusTokens();
9
10
  const directusAuth = useDirectusAuth();
10
- const preview = route.query.preview && route.query.preview === "true";
11
- const token = route.query.token;
11
+ const directusPreview = useDirectusPreview();
12
+ directusPreview.value = !!(route.query.preview === "true" || route.query.preview === "1") || !!(route.query["visual-editor"] === "true" || route.query["visual-editor"] === "1");
13
+ if (directusPreview.value) {
14
+ if (config.public.directus.visualEditor) {
15
+ nuxtApp.hook("page:start", async () => {
16
+ if (import.meta.client) {
17
+ remove();
18
+ }
19
+ });
20
+ nuxtApp.hook("page:finish", () => {
21
+ if (import.meta.client) {
22
+ apply({ directusUrl: config.public.directus.url });
23
+ }
24
+ });
25
+ }
26
+ const token = route.query.token;
27
+ if (token) {
28
+ useDirectus().setToken(token);
29
+ nuxtApp.hook("page:finish", () => {
30
+ refreshNuxtData();
31
+ });
32
+ }
33
+ }
12
34
  if (!tokens.directusUrl.value || tokens.directusUrl.value !== config.public.directus.url) {
13
35
  tokens.directusUrl.value = config.public.directus.url;
14
36
  if (tokens.accessToken.value || tokens.refreshToken.value) {
@@ -18,12 +40,6 @@ export default defineNuxtPlugin(async (nuxtApp) => {
18
40
  });
19
41
  }
20
42
  }
21
- if (preview && token) {
22
- useDirectus().setToken(token);
23
- nuxtApp.hook("page:finish", () => {
24
- refreshNuxtData();
25
- });
26
- }
27
43
  async function fetchUser() {
28
44
  if (config.public.directus.auth?.enabled ?? true)
29
45
  await directusAuth.readMe();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-directus-sdk",
3
3
  "type": "module",
4
- "version": "3.0.7",
4
+ "version": "3.0.9",
5
5
  "description": "A Directus nuxt module that uses the Directus SDK",
6
6
  "author": "Matthew Rollinson <matt@rolley.io>",
7
7
  "license": "MIT",