feat(SW-216): added table to contentstack query for contentpage

This commit is contained in:
Erik Tiekstra
2024-10-04 08:36:08 +02:00
committed by Pontus Dreij
parent ee6a40a553
commit ef411b4cf9
8 changed files with 77 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ import {
shortcutsRefsSchema,
shortcutsSchema,
} from "../schemas/blocks/shortcuts"
import { tableSchema } from "../schemas/blocks/table"
import { textColsRefsSchema, textColsSchema } from "../schemas/blocks/textCols"
import { uspGridRefsSchema, uspGridSchema } from "../schemas/blocks/uspGrid"
import { tempImageVaultAssetSchema } from "../schemas/imageVault"
@@ -75,11 +76,18 @@ export const contentPageUspGrid = z
})
.merge(uspGridSchema)
export const contentPageTable = z
.object({
__typename: z.literal(ContentPageEnum.ContentStack.blocks.Table),
})
.merge(tableSchema)
export const blocksSchema = z.discriminatedUnion("__typename", [
contentPageCards,
contentPageContent,
contentPageDynamicContent,
contentPageShortcuts,
contentPageTable,
contentPageTextCols,
contentPageUspGrid,
])

View File

@@ -0,0 +1,51 @@
import { z } from "zod"
import { BlocksEnums } from "@/types/enums/blocks"
export const tableSchema = z.object({
typename: z
.literal(BlocksEnums.block.Table)
.optional()
.default(BlocksEnums.block.Table),
table: z
.object({
column_widths: z.array(z.number()),
table: z.object({
tableState: z.object({
columns: z.array(
z.object({
id: z.string(),
label: z.string().default(""),
accessor: z.string(),
dataType: z.string(),
})
),
data: z.array(z.object({}).catchall(z.string())),
skipReset: z.boolean(),
tableActionEnabled: z.boolean(),
headerRowAdded: z.boolean(),
}),
}),
})
.transform((data) => {
const columns = data.table.tableState.columns.map((col, idx) => ({
id: col.id,
Header: col.label || "",
accessor: col.accessor,
columnWidth: data.column_widths[idx] || 0,
}))
const rows = data.table.tableState.data.map((rowData) => {
const transformedRow: Record<string, string> = {}
columns.forEach((col) => {
transformedRow[col.accessor] = rowData[col.accessor] || ""
})
return transformedRow
})
return {
columns,
rows,
}
}),
})