Skip to main content

Supported blocks

This document provides an overview of block implementation status in the Strapi CMS integration.

All blocks in the Strapi integration are fully implemented with:

  • Complete GraphQL fragments for data fetching
  • Mappers that transform Strapi data to the O2S block model
  • Cache integration for optimized performance

Implementation status​

The following table shows the implementation status of all blocks available in the O2S framework:

BlockStatusStrapi TypeNotes
article✅Article (separate module)Fully implemented
article-list✅ComponentComponentsArticleListFully implemented
article-search✅ComponentComponentsArticleSearchFully implemented
category✅ComponentComponentsCategoryFully implemented
category-list✅ComponentComponentsCategoryListFully implemented
faq✅ComponentComponentsFaqFully implemented
featured-service-list✅ComponentComponentsFeaturedServiceListFully implemented
invoice-list✅ComponentComponentsInvoiceListFully implemented
notification-list✅ComponentComponentsNotificationListFully implemented
order-details✅ComponentComponentsOrderDetailsFully implemented
order-list✅ComponentComponentsOrderListFully implemented
orders-summary✅ComponentComponentsOrdersSummaryFully implemented
payments-history✅ComponentComponentsPaymentsHistoryFully implemented
payments-summary✅ComponentComponentsPaymentsSummaryFully implemented
quick-links✅ComponentComponentsQuickLinksFully implemented
service-details✅ComponentComponentsServiceDetailsFully implemented
service-list✅ComponentComponentsServiceListFully implemented
surveyjs-form✅ComponentComponentsSurveyJSFully implemented
ticket-details✅ComponentComponentsTicketDetailsFully implemented
ticket-list✅ComponentComponentsTicketListFully implemented
ticket-recent✅ComponentComponentsTicketRecentFully implemented
user-account✅ComponentComponentsUserAccountFully implemented
cart❌-Not implemented
checkout-billing-payment❌-Not implemented
checkout-company-data❌-Not implemented
checkout-shipping-address❌-Not implemented
checkout-summary❌-Not implemented
order-confirmation❌-Not implemented
product-details❌-Not implemented
product-list❌-Not implemented
recommended-products❌-Not implemented
bento-grid❌-Not implemented
cta-section❌-Not implemented
document-list❌-Not implemented
feature-section❌-Not implemented
feature-section-grid❌-Not implemented
hero-section❌-Not implemented
media-section❌-Not implemented
notification-summary❌-Not implemented
notification-details❌-Not implemented
pricing-section❌-Not implemented
ticket-summary❌-Not implemented

Blocks with mock data​

Some blocks return static mock data instead of fetching content from Strapi. This is typically used for blocks where the actual data comes from external backend services rather than CMS content:

  • notification-details - Returns mock notification details (data comes from notifications service)
  • product-details - Returns mock product details (pending full Strapi integration)
  • product-list - Returns mock product list configuration (pending full Strapi integration)
  • recommended-products - Returns mock recommended products labels (pending full Strapi integration)

These blocks have their visual configuration (labels, table columns, etc.) managed in Strapi, but the actual data is fetched from their respective backend services.

Block structure​

Each block in Strapi follows a consistent structure:

  1. GraphQL Fragment - Located in ./src/modules/cms/graphql/fragments/blocks/ - defines what data to fetch
  2. Mapper - Located in ./src/modules/cms/mappers/blocks/ - transforms Strapi data to O2S model
  3. Service Method - Defined in CmsService - provides cached access to block data

Example: FAQ Block​

GraphQL Fragment:

fragment FaqComponent on ComponentComponentsFaq {
__typename
id
title
subtitle
items {
title
description
}
}

Service Method:

getFaqBlock(options: CMS.Request.GetCmsEntryParams) {
const key = `faq-component-${options.id}-${options.locale}`;
return this.getCachedBlock(key, () => this.getBlock(options).pipe(map(mapFaqBlock)));
}