@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.
- package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.cjs +8 -8
- package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.cjs.map +1 -1
- package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.js +9 -9
- package/dist/PrismicRichText/DeprecatedPrismicRichText.vue.js.map +1 -1
- package/dist/PrismicTable/PrismicTable.vue.cjs +62 -0
- package/dist/PrismicTable/PrismicTable.vue.cjs.map +1 -0
- package/dist/PrismicTable/PrismicTable.vue.d.ts +32 -0
- package/dist/PrismicTable/PrismicTable.vue.js +63 -0
- package/dist/PrismicTable/PrismicTable.vue.js.map +1 -0
- package/dist/PrismicTable/PrismicTable.vue2.cjs +4 -0
- package/dist/PrismicTable/PrismicTable.vue2.cjs.map +1 -0
- package/dist/PrismicTable/PrismicTable.vue2.js +5 -0
- package/dist/PrismicTable/PrismicTable.vue2.js.map +1 -0
- package/dist/PrismicTable/PrismicTableDefaultComponents.cjs +44 -0
- package/dist/PrismicTable/PrismicTableDefaultComponents.cjs.map +1 -0
- package/dist/PrismicTable/PrismicTableDefaultComponents.d.ts +2 -0
- package/dist/PrismicTable/PrismicTableDefaultComponents.js +44 -0
- package/dist/PrismicTable/PrismicTableDefaultComponents.js.map +1 -0
- package/dist/PrismicTable/PrismicTableRow.vue.cjs +52 -0
- package/dist/PrismicTable/PrismicTableRow.vue.cjs.map +1 -0
- package/dist/PrismicTable/PrismicTableRow.vue.d.ts +26 -0
- package/dist/PrismicTable/PrismicTableRow.vue.js +53 -0
- package/dist/PrismicTable/PrismicTableRow.vue.js.map +1 -0
- package/dist/PrismicTable/PrismicTableRow.vue2.cjs +4 -0
- package/dist/PrismicTable/PrismicTableRow.vue2.cjs.map +1 -0
- package/dist/PrismicTable/PrismicTableRow.vue2.js +5 -0
- package/dist/PrismicTable/PrismicTableRow.vue2.js.map +1 -0
- package/dist/PrismicTable/getTableComponentProps.cjs +30 -0
- package/dist/PrismicTable/getTableComponentProps.cjs.map +1 -0
- package/dist/PrismicTable/getTableComponentProps.d.ts +128 -0
- package/dist/PrismicTable/getTableComponentProps.js +30 -0
- package/dist/PrismicTable/getTableComponentProps.js.map +1 -0
- package/dist/PrismicTable/index.d.ts +1 -0
- package/dist/PrismicTable/types.d.ts +30 -0
- package/dist/createPrismic.cjs +2 -0
- package/dist/createPrismic.cjs.map +1 -1
- package/dist/createPrismic.js +5 -3
- package/dist/createPrismic.js.map +1 -1
- package/dist/index.cjs +4 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +14 -10
- package/dist/index.js.map +1 -1
- package/dist/package.json.cjs +1 -1
- package/dist/package.json.js +1 -1
- package/package.json +3 -3
- package/src/PrismicRichText/DeprecatedPrismicRichText.vue +9 -8
- package/src/PrismicTable/PrismicTable.vue +80 -0
- package/src/PrismicTable/PrismicTableDefaultComponents.ts +44 -0
- package/src/PrismicTable/PrismicTableRow.vue +51 -0
- package/src/PrismicTable/getTableComponentProps.ts +142 -0
- package/src/PrismicTable/index.ts +1 -0
- package/src/PrismicTable/types.ts +34 -0
- package/src/createPrismic.ts +2 -0
- 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>
|
package/src/createPrismic.ts
CHANGED
|
@@ -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,
|