200 lines
5.2 KiB
TypeScript
200 lines
5.2 KiB
TypeScript
import type { Block } from 'payload'
|
|
import { anchorField } from '@/fields/anchorField'
|
|
|
|
export const FDQuizBlock: Block = {
|
|
slug: 'fdQuiz',
|
|
imageURL: '/block-thumbnails/fd-quiz.png',
|
|
imageAltText: 'FD Quiz / Behovsanalys',
|
|
interfaceName: 'FDQuizBlock',
|
|
labels: {
|
|
singular: 'FD Quiz / Behovsanalys',
|
|
plural: 'FD Quiz / Behovsanalyser',
|
|
},
|
|
fields: [
|
|
{
|
|
name: 'heading',
|
|
type: 'text',
|
|
localized: true,
|
|
label: 'Rubrik',
|
|
required: true,
|
|
defaultValue: 'Vilken tjänst passar dig?',
|
|
},
|
|
{
|
|
name: 'description',
|
|
type: 'textarea',
|
|
localized: true,
|
|
label: 'Beskrivning (valfri)',
|
|
},
|
|
{
|
|
name: 'triggerLabel',
|
|
type: 'text',
|
|
localized: true,
|
|
label: 'Startknapp-text',
|
|
defaultValue: 'Starta quiz',
|
|
},
|
|
|
|
/* ── Outcomes — define these FIRST so editors know the keys ── */
|
|
{
|
|
type: 'collapsible',
|
|
label: 'Resultat / rekommendationer',
|
|
admin: { initCollapsed: false },
|
|
fields: [
|
|
{
|
|
name: 'outcomes',
|
|
type: 'array',
|
|
label: 'Möjliga resultat',
|
|
minRows: 2,
|
|
maxRows: 6,
|
|
labels: { singular: 'Resultat', plural: 'Resultat' },
|
|
fields: [
|
|
{
|
|
name: 'key',
|
|
type: 'text',
|
|
label: 'Nyckel (kort, unik, t.ex. "vdc", "colo", "fiber")',
|
|
required: true,
|
|
admin: {
|
|
description: 'Används i frågornas alternativ. Bara små bokstäver, inga mellanslag.',
|
|
},
|
|
},
|
|
{
|
|
name: 'title',
|
|
type: 'text',
|
|
localized: true,
|
|
label: 'Resultatrubrik (t.ex. "Virtuellt Datacenter")',
|
|
required: true,
|
|
},
|
|
{
|
|
name: 'description',
|
|
type: 'textarea',
|
|
localized: true,
|
|
label: 'Resultatbeskrivning',
|
|
},
|
|
{
|
|
name: 'ctaText',
|
|
type: 'text',
|
|
localized: true,
|
|
label: 'CTA-knapp text',
|
|
defaultValue: 'Läs mer',
|
|
},
|
|
{
|
|
name: 'ctaLink',
|
|
type: 'text',
|
|
label: 'CTA-knapp länk',
|
|
defaultValue: '/kontakt',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
|
|
/* ── Questions ── */
|
|
{
|
|
type: 'collapsible',
|
|
label: 'Frågor',
|
|
admin: { initCollapsed: false },
|
|
fields: [
|
|
{
|
|
name: 'questions',
|
|
type: 'array',
|
|
label: 'Frågor',
|
|
minRows: 2,
|
|
maxRows: 10,
|
|
labels: { singular: 'Fråga', plural: 'Frågor' },
|
|
fields: [
|
|
{
|
|
name: 'question',
|
|
type: 'text',
|
|
localized: true,
|
|
label: 'Frågetext',
|
|
required: true,
|
|
},
|
|
{
|
|
name: 'options',
|
|
type: 'array',
|
|
label: 'Svarsalternativ',
|
|
minRows: 2,
|
|
maxRows: 5,
|
|
labels: { singular: 'Alternativ', plural: 'Alternativ' },
|
|
fields: [
|
|
{
|
|
name: 'label',
|
|
type: 'text',
|
|
localized: true,
|
|
label: 'Alternativtext',
|
|
required: true,
|
|
},
|
|
{
|
|
name: 'sublabel',
|
|
type: 'text',
|
|
localized: true,
|
|
label: 'Undertext (valfri, visas under alternativet)',
|
|
},
|
|
{
|
|
name: 'outcomeKeys',
|
|
type: 'text',
|
|
label: 'Resultatnycklar (kommaseparerade, t.ex. "vdc,fiber")',
|
|
required: true,
|
|
admin: {
|
|
description: 'Varje valt alternativ ger +1 poäng till angivna resultatnycklar.',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
|
|
/* ── UI labels ── */
|
|
{
|
|
type: 'collapsible',
|
|
label: 'Knappar & etiketter',
|
|
admin: { initCollapsed: true },
|
|
fields: [
|
|
{
|
|
name: 'nextLabel',
|
|
type: 'text',
|
|
localized: true,
|
|
label: '"Nästa"-knapptext',
|
|
defaultValue: 'Nästa',
|
|
},
|
|
{
|
|
name: 'backLabel',
|
|
type: 'text',
|
|
localized: true,
|
|
label: '"Tillbaka"-knapptext',
|
|
defaultValue: 'Tillbaka',
|
|
},
|
|
{
|
|
name: 'resultHeading',
|
|
type: 'text',
|
|
localized: true,
|
|
label: 'Resultatrubrik',
|
|
defaultValue: 'Rekommenderat:',
|
|
},
|
|
{
|
|
name: 'restartLabel',
|
|
type: 'text',
|
|
localized: true,
|
|
label: '"Börja om"-knapptext',
|
|
defaultValue: 'Börja om',
|
|
},
|
|
],
|
|
},
|
|
|
|
/* ── Styling ── */
|
|
{
|
|
name: 'sectionBackground',
|
|
type: 'select',
|
|
label: 'Sektionsbakgrund',
|
|
defaultValue: 'navy',
|
|
options: [
|
|
{ label: 'Vit', value: 'white' },
|
|
{ label: 'Grå', value: 'gray' },
|
|
{ label: 'Navy', value: 'navy' },
|
|
],
|
|
},
|
|
anchorField,
|
|
],
|
|
}
|