@prismicio/vue 5.0.3 → 5.1.1

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.
Files changed (55) hide show
  1. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.cjs +8 -8
  2. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.cjs.map +1 -1
  3. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.js +9 -9
  4. package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.js.map +1 -1
  5. package/dist/PrismicTable/PrismicTable.vue.cjs +62 -0
  6. package/dist/PrismicTable/PrismicTable.vue.cjs.map +1 -0
  7. package/dist/PrismicTable/PrismicTable.vue.d.ts +32 -0
  8. package/dist/PrismicTable/PrismicTable.vue.js +63 -0
  9. package/dist/PrismicTable/PrismicTable.vue.js.map +1 -0
  10. package/dist/PrismicTable/PrismicTable.vue2.cjs +4 -0
  11. package/dist/PrismicTable/PrismicTable.vue2.cjs.map +1 -0
  12. package/dist/PrismicTable/PrismicTable.vue2.js +5 -0
  13. package/dist/PrismicTable/PrismicTable.vue2.js.map +1 -0
  14. package/dist/PrismicTable/PrismicTableDefaultComponents.cjs +44 -0
  15. package/dist/PrismicTable/PrismicTableDefaultComponents.cjs.map +1 -0
  16. package/dist/PrismicTable/PrismicTableDefaultComponents.d.ts +2 -0
  17. package/dist/PrismicTable/PrismicTableDefaultComponents.js +44 -0
  18. package/dist/PrismicTable/PrismicTableDefaultComponents.js.map +1 -0
  19. package/dist/PrismicTable/PrismicTableRow.vue.cjs +52 -0
  20. package/dist/PrismicTable/PrismicTableRow.vue.cjs.map +1 -0
  21. package/dist/PrismicTable/PrismicTableRow.vue.d.ts +26 -0
  22. package/dist/PrismicTable/PrismicTableRow.vue.js +53 -0
  23. package/dist/PrismicTable/PrismicTableRow.vue.js.map +1 -0
  24. package/dist/PrismicTable/PrismicTableRow.vue2.cjs +4 -0
  25. package/dist/PrismicTable/PrismicTableRow.vue2.cjs.map +1 -0
  26. package/dist/PrismicTable/PrismicTableRow.vue2.js +5 -0
  27. package/dist/PrismicTable/PrismicTableRow.vue2.js.map +1 -0
  28. package/dist/PrismicTable/getTableComponentProps.cjs +30 -0
  29. package/dist/PrismicTable/getTableComponentProps.cjs.map +1 -0
  30. package/dist/PrismicTable/getTableComponentProps.d.ts +128 -0
  31. package/dist/PrismicTable/getTableComponentProps.js +30 -0
  32. package/dist/PrismicTable/getTableComponentProps.js.map +1 -0
  33. package/dist/PrismicTable/index.d.ts +1 -0
  34. package/dist/PrismicTable/types.d.ts +30 -0
  35. package/dist/createPrismic.cjs +2 -0
  36. package/dist/createPrismic.cjs.map +1 -1
  37. package/dist/createPrismic.js +5 -3
  38. package/dist/createPrismic.js.map +1 -1
  39. package/dist/index.cjs +4 -0
  40. package/dist/index.cjs.map +1 -1
  41. package/dist/index.d.ts +4 -1
  42. package/dist/index.js +14 -10
  43. package/dist/index.js.map +1 -1
  44. package/dist/package.json.cjs +1 -1
  45. package/dist/package.json.js +1 -1
  46. package/package.json +3 -3
  47. package/src/PrismicRichText/DeprecatedPrismicRichText.vue +9 -8
  48. package/src/PrismicTable/PrismicTable.vue +80 -0
  49. package/src/PrismicTable/PrismicTableDefaultComponents.ts +44 -0
  50. package/src/PrismicTable/PrismicTableRow.vue +51 -0
  51. package/src/PrismicTable/getTableComponentProps.ts +142 -0
  52. package/src/PrismicTable/index.ts +1 -0
  53. package/src/PrismicTable/types.ts +34 -0
  54. package/src/createPrismic.ts +2 -0
  55. package/src/index.ts +5 -0
@@ -0,0 +1,51 @@
1
+ <script lang="ts" setup>
2
+ import type { TableFieldBodyRow, TableFieldHeadRow } from "@prismicio/client"
3
+
4
+ import type { VueTableComponents } from "./types"
5
+
6
+ import type { VueRichTextSerializer } from "../PrismicRichText"
7
+ import PrismicRichText from "../PrismicRichText/PrismicRichText.vue"
8
+
9
+ /**
10
+ * Props for `<PrismicRowTable />`.
11
+ */
12
+ export type PrismicTableRowProps = {
13
+ /**
14
+ * The Prismic table row to render.
15
+ */
16
+ row: TableFieldHeadRow | TableFieldBodyRow
17
+
18
+ /**
19
+ * An object that maps a table block type to a Vue component.
20
+ *
21
+ * @example
22
+ *
23
+ * ```javascript
24
+ * {
25
+ * tr: TableRow,
26
+ * }
27
+ * ```
28
+ */
29
+ components: VueTableComponents & VueRichTextSerializer
30
+ }
31
+
32
+ const props = defineProps<PrismicTableRowProps>()
33
+ defineOptions({ name: "PrismicTableRow" })
34
+ </script>
35
+
36
+ <template>
37
+ <component :is="props.components.tr" :row="row">
38
+ <template v-for="cell in row.cells" :key="JSON.stringify(cell)">
39
+ <component
40
+ v-if="cell.type === 'header'"
41
+ :is="props.components.th"
42
+ :cell="cell"
43
+ >
44
+ <PrismicRichText :field="cell.content" :components="components" />
45
+ </component>
46
+ <component v-else :is="props.components.td" :cell="cell">
47
+ <PrismicRichText :field="cell.content" :components="props.components" />
48
+ </component>
49
+ </template>
50
+ </component>
51
+ </template>
@@ -0,0 +1,142 @@
1
+ import type {
2
+ TableField,
3
+ TableFieldBody,
4
+ TableFieldBodyRow,
5
+ TableFieldDataCell,
6
+ TableFieldHead,
7
+ TableFieldHeadRow,
8
+ TableFieldHeaderCell,
9
+ } from "@prismicio/client"
10
+ import type { PropType } from "vue"
11
+
12
+ /**
13
+ * Gets native Vue props for a component rendering `table` elements from a
14
+ * Prismic table field with `<PrismicTable />`.
15
+ *
16
+ * Props are: `["table"]`
17
+ *
18
+ * @example
19
+ *
20
+ * ```javascript
21
+ * // Defining a new rich text component
22
+ * import { getTableComponentProps } from "@prismicio/vue"
23
+ *
24
+ * defineProps(getTableComponentProps.table())
25
+ * ```
26
+ */
27
+ export const table = (): {
28
+ table: { type: PropType<TableField<"filled">>; required: true }
29
+ } => ({
30
+ table: { type: Object as PropType<TableField<"filled">>, required: true },
31
+ })
32
+
33
+ /**
34
+ * Gets native Vue props for a component rendering `thead` elements from a
35
+ * Prismic table field with `<PrismicTable />`.
36
+ *
37
+ * Props are: `["head"]`
38
+ *
39
+ * @example
40
+ *
41
+ * ```javascript
42
+ * // Defining a new rich text component
43
+ * import { getTableComponentProps } from "@prismicio/vue"
44
+ *
45
+ * defineProps(getTableComponentProps.thead())
46
+ * ```
47
+ */
48
+ export const thead = (): {
49
+ head: { type: PropType<TableFieldHead>; required: true }
50
+ } => ({
51
+ head: { type: Object as PropType<TableFieldHead>, required: true },
52
+ })
53
+
54
+ /**
55
+ * Gets native Vue props for a component rendering `tbody` elements from a
56
+ * Prismic table field with `<PrismicTable />`.
57
+ *
58
+ * Props are: `["body"]`
59
+ *
60
+ * @example
61
+ *
62
+ * ```javascript
63
+ * // Defining a new rich text component
64
+ * import { getTableComponentProps } from "@prismicio/vue"
65
+ *
66
+ * defineProps(getTableComponentProps.body())
67
+ * ```
68
+ */
69
+ export const tbody = (): {
70
+ body: { type: PropType<TableFieldBody>; required: true }
71
+ } => ({
72
+ body: { type: Object as PropType<TableFieldBody>, required: true },
73
+ })
74
+
75
+ /**
76
+ * Gets native Vue props for a component rendering `tr` elements from a Prismic
77
+ * table field with `<PrismicTable />`.
78
+ *
79
+ * Props are: `["row"]`
80
+ *
81
+ * @example
82
+ *
83
+ * ```javascript
84
+ * // Defining a new rich text component
85
+ * import { getTableComponentProps } from "@prismicio/vue"
86
+ *
87
+ * defineProps(getTableComponentProps.tr())
88
+ * ```
89
+ */
90
+ export const tr = (): {
91
+ row: {
92
+ type: PropType<TableFieldHeadRow | TableFieldBodyRow>
93
+ required: true
94
+ }
95
+ } => ({
96
+ row: {
97
+ type: Object as PropType<TableFieldHeadRow | TableFieldBodyRow>,
98
+ required: true,
99
+ },
100
+ })
101
+
102
+ /**
103
+ * Gets native Vue props for a component rendering `th` elements from a Prismic
104
+ * table field with `<PrismicTable />`.
105
+ *
106
+ * Props are: `["cell"]`
107
+ *
108
+ * @example
109
+ *
110
+ * ```javascript
111
+ * // Defining a new rich text component
112
+ * import { getTableComponentProps } from "@prismicio/vue"
113
+ *
114
+ * defineProps(getTableComponentProps.th())
115
+ * ```
116
+ */
117
+ export const th = (): {
118
+ cell: { type: PropType<TableFieldHeaderCell>; required: true }
119
+ } => ({
120
+ cell: { type: Object as PropType<TableFieldHeaderCell>, required: true },
121
+ })
122
+
123
+ /**
124
+ * Gets native Vue props for a component rendering `td` elements from a Prismic
125
+ * table field with `<PrismicTable />`.
126
+ *
127
+ * Props are: `["cell"]`
128
+ *
129
+ * @example
130
+ *
131
+ * ```javascript
132
+ * // Defining a new rich text component
133
+ * import { getTableComponentProps } from "@prismicio/vue"
134
+ *
135
+ * defineProps(getTableComponentProps.td())
136
+ * ```
137
+ */
138
+ export const td = (): {
139
+ cell: { type: PropType<TableFieldDataCell>; required: true }
140
+ } => ({
141
+ cell: { type: Object as PropType<TableFieldDataCell>, required: true },
142
+ })
@@ -0,0 +1 @@
1
+ export * as getTableComponentProps from "./getTableComponentProps"
@@ -0,0 +1,34 @@
1
+ import type {
2
+ TableField,
3
+ TableFieldBody,
4
+ TableFieldBodyRow,
5
+ TableFieldDataCell,
6
+ TableFieldHead,
7
+ TableFieldHeadRow,
8
+ TableFieldHeaderCell,
9
+ } from "@prismicio/client"
10
+ import type {
11
+ DefineComponent,
12
+ FunctionalComponent,
13
+ defineAsyncComponent,
14
+ } from "vue"
15
+
16
+ /**
17
+ * A map of Table block types to Vue Components. It is used to render table
18
+ * fields.
19
+ *
20
+ * @see Templating Table fields from Prismic {@link https://prismic.io/docs/table}
21
+ */
22
+ export type VueTableComponents = {
23
+ table?: VueComponent<{ table: TableField<"filled"> }>
24
+ thead?: VueComponent<{ head: TableFieldHead }>
25
+ tbody?: VueComponent<{ body: TableFieldBody }>
26
+ tr?: VueComponent<{ row: TableFieldBodyRow | TableFieldHeadRow }>
27
+ th?: VueComponent<{ cell: TableFieldHeaderCell }>
28
+ td?: VueComponent<{ cell: TableFieldDataCell }>
29
+ }
30
+
31
+ type VueComponent<TProps> =
32
+ | ReturnType<typeof defineAsyncComponent>
33
+ | DefineComponent<TProps>
34
+ | FunctionalComponent<TProps>
@@ -29,6 +29,7 @@ import type {
29
29
  } from "./types"
30
30
 
31
31
  import PrismicRichText from "./PrismicRichText/PrismicRichText.vue"
32
+ import PrismicTable from "./PrismicTable/PrismicTable.vue"
32
33
  import SliceZone from "./SliceZone/SliceZone.vue"
33
34
 
34
35
  import PrismicEmbed from "./PrismicEmbed.vue"
@@ -130,6 +131,7 @@ export const createPrismic = (options: PrismicPluginOptions): PrismicPlugin => {
130
131
  app.component(PrismicLink.name!, PrismicLink)
131
132
  app.component(PrismicEmbed.name!, PrismicEmbed)
132
133
  app.component(PrismicImage.name!, PrismicImage)
134
+ app.component(PrismicTable.name!, PrismicTable)
133
135
  app.component(PrismicText.name!, PrismicText)
134
136
  app.component(PrismicRichText.name!, PrismicRichText)
135
137
  app.component(SliceZone.name!, SliceZone)
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import PrismicRichText from "./PrismicRichText/PrismicRichText.vue"
2
+ import PrismicTable from "./PrismicTable/PrismicTable.vue"
2
3
  import SliceZone from "./SliceZone/SliceZone.vue"
3
4
 
4
5
  import PrismicEmbed from "./PrismicEmbed.vue"
@@ -8,6 +9,7 @@ import PrismicText from "./PrismicText.vue"
8
9
 
9
10
  export type { SliceZoneProps } from "./SliceZone/SliceZone.vue"
10
11
  export type { PrismicRichTextProps } from "./PrismicRichText/PrismicRichText.vue"
12
+ export type { PrismicTableProps } from "./PrismicTable/PrismicTable.vue"
11
13
 
12
14
  export type { PrismicEmbedProps } from "./PrismicEmbed.vue"
13
15
  export type { PrismicImageProps } from "./PrismicImage.vue"
@@ -19,6 +21,7 @@ export {
19
21
  PrismicEmbed,
20
22
  PrismicImage,
21
23
  PrismicLink,
24
+ PrismicTable,
22
25
  PrismicText,
23
26
  PrismicRichText,
24
27
  }
@@ -29,6 +32,8 @@ export type {
29
32
  RichTextComponentProps,
30
33
  } from "./PrismicRichText"
31
34
 
35
+ export { getTableComponentProps } from "./PrismicTable"
36
+
32
37
  export {
33
38
  TODOSliceComponent,
34
39
  defineSliceZoneComponents,