Files
VITEC-website/packages/vitec/ContentBlocks/ContentElements/card/config.yaml
T
orascheandClaude Fable 5 6db2234851 vitec_card: flipcard layout + card-back fields; shared-column repair
- layout_variant gains the value "flipcard" (onChange: reload)
- "Card Back" palette in the Layout tab directly below layout_variant:
  back_headline (Text, max 100) and back_text (Textarea, richtext),
  displayCond-gated on the flipcard layout; serialised unconditionally -
  the frontend keys the back face on layout_variant, not on field
  presence (spec 7.7)
- backend preview: flipcard badge + back-headline line
- repair "[ Missing label ]" in the card selects: layout_variant /
  background_variant are columns SHARED with vitec_ctabanner, and the
  index-wise Content Blocks merge dropped four card-only values from
  the base item list. Overrides/tt_content.php now pins the base column
  to the cta-banner lists and hands vitec_card its full lists via
  columnsOverrides (respected by FormEngine and DataHandler; an items
  override can only extend, never shorten - array_replace_recursive)
- spec v1.19 incl. head-matter fix (version table was stuck at 1.17)

Server follow-up: database:updateschema "*.add,*.change" + cache:flush

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-25 12:16:16 +02:00

231 lines
5.6 KiB
YAML
Executable File

name: vitec/card
group: vitec_custom_components
prefixFields: true
prefixType: vendor
fields:
# ──────────────────────────────────────────────────────────────────────
- identifier: tab_content
type: Tab
label: Content
- identifier: eyebrow
type: Text
max: 50
- identifier: header_section
type: Palette
label: Header
fields:
- identifier: header
useExistingField: true
required: true
- type: Linebreak
- identifier: header_layout
useExistingField: true
- identifier: header_position
useExistingField: true
- identifier: date
useExistingField: true
- type: Linebreak
- identifier: header_link
useExistingField: true
- type: Linebreak
- identifier: subheader
useExistingField: true
- identifier: bodytext
useExistingField: true
enableRichtext: true
- identifier: image
type: File
minitems: 0
maxitems: 1
allowed: common-image-types
- identifier: icon
type: File
minitems: 0
maxitems: 1
allowed: svg,png
- identifier: primary_cta
type: Link
allowedTypes:
- page
- url
- file
- email
- identifier: primary_cta_label
type: Text
max: 30
default: 'Learn more'
- identifier: secondary_cta
type: Link
allowedTypes:
- page
- url
- file
- email
- identifier: secondary_cta_label
type: Text
max: 30
- identifier: Vitec/ButtonStyle
type: Basic
- identifier: Vitec/SecondaryButtonStyle
type: Basic
- identifier: card_link
type: Link
allowedTypes:
- page
- url
- file
- email
# ──────────────────────────────────────────────────────────────────────
- identifier: tab_layout
type: Tab
label: Layout
- identifier: layout_variant
type: Select
renderType: selectSingle
default: vertical
# displayCond of the card-back fields depends on this value
onChange: reload
items:
- label: Vertical (image top, content below)
value: vertical
- label: Horizontal (image left, content right)
value: horizontal
- label: Horizontal Reverse (content left, image right)
value: horizontal_reverse
- label: Image Overlay (text over image)
value: image_overlay
- label: Text Only (no image)
value: text_only
- label: Icon Card (icon focused, text below)
value: icon_card
- label: Feature (large highlighted card)
value: feature
- label: Compact (small card, tight spacing)
value: compact
- label: Flip Card (front / back)
value: flipcard
# Card back - only shown when layout_variant = flipcard. displayCond needs
# the storage column (vitec_ vendor prefix); the JSON keys stay the plain
# identifiers back_headline / back_text and are emitted on EVERY card
# (empty when unset) - the frontend keys the back face on layout_variant.
- identifier: card_back
type: Palette
label: Card Back
description: Reverse side of the card. Only used (and only shown) when the layout variant is "Flip Card".
fields:
- identifier: back_headline
type: Text
max: 100
displayCond: 'FIELD:vitec_layout_variant:=:flipcard'
- type: Linebreak
- identifier: back_text
type: Textarea
enableRichtext: true
displayCond: 'FIELD:vitec_layout_variant:=:flipcard'
- identifier: background_variant
type: Select
renderType: selectSingle
default: none
items:
- label: None
value: none
- label: Orange
value: orange
- label: Blue
value: blue
- label: Graphite
value: graphite
- label: Midnight
value: midnight
- label: Light (neutral)
value: light
- label: Dark (neutral)
value: dark
- identifier: image_aspect_ratio
type: Select
renderType: selectSingle
default: auto
items:
- label: Auto (original)
value: auto
- label: Square (1:1)
value: '1_1'
- label: Landscape (4:3)
value: '4_3'
- label: Widescreen (16:9)
value: '16_9'
- label: Portrait (3:4)
value: '3_4'
- identifier: text_alignment
type: Select
renderType: selectSingle
default: left
items:
- label: Left
value: left
- label: Center
value: center
- label: Right
value: right
- identifier: border_style
type: Select
renderType: selectSingle
default: none
items:
- label: None
value: none
- label: Soft (subtle line)
value: soft
- label: Hard (thick line)
value: hard
- label: Dashed
value: dashed
- identifier: shadow
type: Select
renderType: selectSingle
default: none
items:
- label: None
value: none
- label: Soft
value: soft
- label: Medium
value: medium
- label: Strong
value: strong
# ──────────────────────────────────────────────────────────────────────
- identifier: tab_advanced
type: Tab
label: Advanced
- identifier: cssClass
type: Text
max: 100
- identifier: debug
type: Checkbox
default: 0