Skip to main content

@acromedia/gesso-drupal

8.4.0​

Minor Changes​

  • a05b774: - Load Drupal menus from the core linkset endpoint for any apiType with the new menuLinkset config flag (removed in v9, when linkset becomes the only menu source). useMenu and getMenu take a langcode option for a language prefix and a buildTree option (default true; false returns a flat list).
    • Linkset menus now nest by each link's hierarchy instead of response order, so children that arrive before their parent are kept and siblings sort by their last hierarchy value. Every link carries its hierarchy in data.hierarchy, and nested link ids use the full hierarchy path (1-1-main-/about/name instead of 1-main-/about/name).
    • The create-nextjs Drupal template turns on menuLinkset with NEXT_PUBLIC_CMS_MENU_LINKSET, which the generated .env sets to true. Set it to false to keep the GraphQL menu query on apiType: graphql.

8.3.2​

Patch Changes​

  • 20d851b: Handle nested paragraphs

8.3.1​

Patch Changes​

  • 8afcce4: dd dynamic CMS/commerce metadata (metatags) on both routers (GESSO-1224)

    Introduces an open, generic metadata pipeline using the established MetadataShape/MetadataTag contract ({ tag, attributes }). Drupal exposes the raw computed metatag array on content.data.metatag (nodes) and product.properties.metatag (commerce products) — the shape existing projects already consume — queried via the node-level GraphQL metatag { tag attributes } field. A normalized convenience copy is also provided on content.data.seo / product.seo and consumed by the App Router's generateMetadata (metatagsToNextMetadata); the Pages Router renders the array verbatim via next/head (MetatagsHead). Nothing is hardcoded or mandatory; unknown tags pass through untouched.

    Additive / non-breaking:

    • @acromedia/gesso-core: new MetadataShape type (+ MetadataTag alias), isSeoMetatags guard, normalizeMetatags (tolerant of both the object-attribute node-level/JSON:API shape and the {key,value} canonical-URL shape), seoToMetatags (structured Seo → array), and an advisory dev-only assertMetadata(seo, pageType). Product.seo's static type is unchanged (Seo); Drupal Commerce stores the MetadataShape[] array there at runtime — discriminate with isSeoMetatags.
    • @acromedia/gesso-drupal / -drupal-commerce: query the node-level metatag { tag attributes } field and pass the raw array through on content.data.metatag / product.properties.metatag (the existing consumer contract), plus a normalized convenience copy on content.data.seo / product.seo (previously empty).
    • @acromedia/gesso-storyblok: buildMetatags() (now exported) builds the array from Storyblok's structured SEO fields; canonical is absolute when a siteUrl config is set (now populated for new projects from the frontend URL), otherwise root-relative.
    • @acromedia/gesso-next: new metatagsToNextMetadata, createProductMetadata (App Router, with a shared React.cache product fetch so metadata + page hit the backend once) and MetatagsHead (Pages Router, with a backupTitle prop) exports; App Router titles use title.absolute so a layout title.template cannot re-wrap CMS titles. Pages Router DynamicHead keeps its legacy { title, description, tags } props (now deprecated) alongside the new seo prop, so existing callers keep working.

    Requires the companion drupal-cms change (metatag + schema_metatag modules, and the metatag GraphQL extension with the node-level metatag field enabled on the node / commerce_product entity types of the GraphQL server).

8.3.0​

Minor Changes​

  • f750fc3: GESSO-2111-refactor: centralize the JSON:API Axios client in @acromedia/gesso-core.

    The same axios.create({ baseURL, withCredentials: true, headers: { 'Content-Type': 'application/vnd.api+json' } }) snippet was duplicated in three places: gesso-drupal-commerce's jsonApi.ts, gesso-drupal's ContentSearch.ts, and gesso-drupal's Content.ts (whose own comment said "Reuse the same JSON:API client creation function as in ContentSearch" but copied it anyway).

    • @acromedia/gesso-core now exports createJsonApiClient(baseURL), memoized per base URL, that returns the pre-configured Axios instance. Throws when baseURL is empty.
    • gesso-drupal's Content.ts and ContentSearch.ts drop their local getJsonApiClient / memoize plumbing and import the core helper directly.
    • gesso-drupal-commerce's jsonApi.ts stays as the thin env-reading wrapper (process.env.NEXT_PUBLIC_DRUPAL_URL) it always was — it now delegates to the core helper. Every call site that imports the default JsonApiClient is unchanged.
    • axios and lodash-es are now runtime dependencies of @acromedia/gesso-core.

8.2.0​

Minor Changes​

  • 037bf45: feat: allow the NodeArticle fragment to be excluded via the excludeNodeArticleFragment config option. Sites without a NodeGessoArticle content type can now opt out of the default fragment instead of spoofing it via queries.Nodes.NodeArticle. Combine with excludeMediaImageFragments: true when the rest of your query no longer references MediaImage.

8.1.0​

Minor Changes​

  • fe87014: feat: add ProductPromotion ComponentFactory plugin. Maps Drupal field_ppc_* fields (product id, title, description, price/quantity toggles, buttons) to the new Gesso ProductPromotion component, composing useLoadProduct and useProductAddToCartProps to render add-to-cart and view-product actions with a loading backdrop.

Patch Changes​

  • bcdbf39: bugfix: correct image in Image paragraph plugin not aligning when unlinked

8.0.3​

Patch Changes​

  • 2a6ab63: Fix Lint and Typescript issues

8.0.2​

Patch Changes​

  • 3fdcb09: CVE-2026-23864

8.0.1​

Patch Changes​

  • 32e066a: Security update

8.0.0​

Major Changes​

  • fe0dc22: ESM Migration for @acromedia/gesso-drupal

    Migrated package to native ESM with backward-compatible CJS support:

    • Build System: Replaced Rollup with tsup for faster, modern builds
    • Module Format: Added "type": "module" with dual ESM/CJS exports via package.json exports field
    • Import Paths: Updated all relative imports with explicit .js extensions for ESM compliance
    • Dependencies: Migrated from lodash to lodash-es for ESM compatibility
    • Configuration: Renamed config files to .cjs (babel, prettier) to work with ESM package
    • Deprecation: Added CJS deprecation warnings via post-build script to encourage ESM adoption
    • TypeScript: Updated Cypress tsconfig for ESM module resolution with moduleResolution: "NodeNext"
    • Dev Dependencies: Updated typescript-eslint (v8), prettier (v3), and other tooling to latest versions

    This change maintains backward compatibility while modernizing the package for better tree-shaking and future Node.js compatibility.

Patch Changes​

  • Updated dependencies [fe0dc22]
  • Updated dependencies [fe0dc22]
  • Updated dependencies [fe0dc22]
  • Updated dependencies [fe0dc22]
    • @acromedia/gesso@8.0.0
    • @acromedia/gesso-cms@8.0.0

7.7.1​

Patch Changes​

  • 94a559e: Remove relationship handling

7.7.0​

Minor Changes​

  • 3469d00: Support new Spacer Height field to have spacing consistent with theme

7.6.0​

Minor Changes​

  • fddda9d: Add "use client" directives to all componentFactory plugins to improve Next.js App Router compatibility and prevent server-side rendering errors

  • fb362b0: Additional layouts added to Section paragraph type

  • 64bf0ec: ESM Migration for @acromedia/gesso-drupal

    Migrated package to native ESM with backward-compatible CJS support:

    • Build System: Replaced Rollup with tsup for faster, modern builds
    • Module Format: Added "type": "module" with dual ESM/CJS exports via package.json exports field
    • Import Paths: Updated all relative imports with explicit .js extensions for ESM compliance
    • Dependencies: Migrated from lodash to lodash-es for ESM compatibility
    • Configuration: Renamed config files to .cjs (babel, prettier) to work with ESM package
    • Deprecation: Added CJS deprecation warnings via post-build script to encourage ESM adoption
    • TypeScript: Updated Cypress tsconfig for ESM module resolution with moduleResolution: "NodeNext"
    • Dev Dependencies: Updated typescript-eslint (v8), prettier (v3), and other tooling to latest versions

    This change maintains backward compatibility while modernizing the package for better tree-shaking and future Node.js compatibility.

7.5.2​

Patch Changes​

  • d8a53bf: Update transformFieldComponents to support relationships

7.5.1​

Patch Changes​

  • 6852582: Design System: add optional expandOnClick prop (default true) to FacetCheckbox to control expanding a facet with children on click.

    Drupal plugin: fix getTag taxonomy requests that could produce 400 Bad Request with JSON:API error "Empty include path" by building the include query param safely (no leading/trailing commas; only set when non-empty).

    Refs: GESSO-2269, GESSO-2270

7.5.0​

Minor Changes​

  • 236a6d0: upgrade all packages to React 19, upgrade CI/builds to Node 22

Patch Changes​

  • 31a0bde: Fix typechecks in plugin packages

7.4.0​

Minor Changes​

  • aaad2a6: Upgrade to typescript v5 and nodenext

7.3.1​

Patch Changes​

  • 6a70c90: add: allow mediaImageFragment to be excluded and modified using the excludeMediaImagesFragment and queries config options.

7.3.0​

Minor Changes​

  • 0137e40: deprecated Drupal getGraphQLClient

Patch Changes​

  • db9e03d: Add: pass includes property from config to jsonapi includes param in getTag method.
  • 2a6b1bf: Add jsonAPI support
  • ed346bf: Use ellipsis character properly

7.2.3​

Patch Changes​

  • 9ed5af2: Added jsonapi for contentsearch

7.2.2​

Patch Changes​

  • 45ceaaf: Updated the user package to only use JSON API
  • 65bc997: Updated grid and grid items to follow the new naming convention
  • 24c5133: Author information added to graphql queries
  • 614916c: Added keys to various component lists, pulled out tokens from some component files so they aren't sent directly to the DOM.

7.2.1​

Patch Changes​

  • 6503503: Update blog to use gesso_article
  • 178088d: Fix image field on blog content
  • ad41a86: Blog image support added

7.2.0​

Minor Changes​

  • d312e6c: - Refactor useMenu to use JSON:API, removed GraphQL
    • Added new types: DrupalLinksetResponse and DrupalLinksetItem
    • Deprecate DrupalMenuResponse and DrupalMenuItem

7.1.0​

Minor Changes​

  • 4ff0955: feat: Redirects JSON:API Migration feat: Deprecate DrupalRedirect, will be removed in V9. Use DrupalRedirectV2 instead.
  • 9c48c7d: feat: Route JSON:API Migration feat: Deprecate DrupalRoutes, will be removed in V9.

7.0.1​

Patch Changes​

  • 1ade4c8: Removed GraphQL code from Tag

7.0.0​

Major Changes​

  • d8721b7: Removed support for old field naming that did not include _gesso_. Removed regression testing for old field names.

Patch Changes​

  • d8721b7: axios update
  • 2280ed6: Forward credentials with drupal cms graphql client
  • Updated dependencies [463096e]
  • Updated dependencies [d8721b7]
  • Updated dependencies [92ee5d2]
  • Updated dependencies [4dd9862]
  • Updated dependencies [89bcfbf]
  • Updated dependencies [d8721b7]
  • Updated dependencies [593ee38]
  • Updated dependencies [92ee5d2]
  • Updated dependencies [d8721b7]
    • @acromedia/gesso@7.0.0
    • @acromedia/gesso-cms@7.0.0

6.3.0​

Minor Changes​

  • ec6492d: Extend Tag to allow for additional fields inside the term gql fragment.

6.2.1​

Patch Changes​

  • 45ac2ea: Fixes the CI package deployment and redeploy

6.2.0​

Minor Changes​

  • 7917a25: Add support for HubSpot Forms in EmbedCode components.
  • a2663bc: Added placeholder (undefined) SEO data to content response until full implementation is complete.

6.1.0​

Minor Changes​

  • 2c6d2b3: Extend tag hooks to include weight as a property within the returned data with the gql response.

6.0.4​

Patch Changes​

  • 0696c44: Update parsing function in the Drupal Card plugin

6.0.3​

Patch Changes​

  • d2ebf3f: Handle the visible slides breakpoints in the SlideCarouselWrapper plugin.

6.0.2​

Patch Changes​

  • fff76de: Add support for arrows and dots inside the slide carousel wrapper drupal cms plugin.
  • fff76de: Grid plugin was updated to allow columnSpacing, rowSpacing and height to be undefined when left unset
  • fff76de: Strap plugin was updated to support videos renderd as background or featured media

6.0.1​

Patch Changes​

  • e8fa722: TS type fixes
  • b31c0cb: Add jsonapi support for drupal useTag plugin
  • 426ad3c: Added withCredentials for login & logout for drupal package.

6.0.0​

Major Changes​

  • 609c5e9: ### Component Factory Plugins

    All plugin types changed from ComponentFactoryPlugin to ComponentFactoryPluginV2<AccordionData> to use the updated plugin type with generic parameter. <AccordionData> used here as an example. Function signature: Updated from (data, pluginManager) => ... to ({ data, pluginManager }) => ... to match the new plugin structure. If a specific plugin does not require pluginManager it is not included.

Patch Changes​

  • Updated dependencies [609c5e9]
  • Updated dependencies [43b2ba1]
  • Updated dependencies [609c5e9]
    • @acromedia/gesso-cms@6.0.0
    • @acromedia/gesso@6.0.0

5.4.4​

Patch Changes​

  • fb6b39f: Correct spacing on fragment gql query.

5.4.3​

Patch Changes​

  • a6b4a0c: Fix issue with Image plugin for component factory not respecting container sizing, causing it to expand past it's container
  • 6f73767: - Regex Section Type Handling: Updated the buildParagraphResponse function to use a regex to check for section types. This allows the system to recognize any section type containing the term "section," such as section, gesso_section, or some_other_project_section, enhancing flexibility for different projects.

5.4.2​

Patch Changes​

  • 1e3ecaf: Fix: correct misspelled drupalUrl config variable name in webform plugin

5.4.1​

Patch Changes​

  • 457547c: Fix: get link field working in the Drupal Image plugin

5.4.0​

Minor Changes​

  • 6f94395: Migrating decodeHTMLEntities to only impact clientside components.

Patch Changes​

  • c0856d9: Handle the case of unordered taxonomy terms when dealing with hierarchy
  • 92b5047: Handle additional fields for query overrides and taxonomy term hierarchy
  • 9230e8d: Fixes issue with buildContent erroring on pages without body field. IE: Pages built using paragraphs

5.3.1​

Patch Changes​

  • 1353067: Add: export drupal field types and drupal utils.

5.3.0​

Minor Changes​

  • d5d1a57: Add background video support to the Strap component
  • f1feb11: - ContentSearch can optionally pass sort as a property. Adds ContentSearchSort interface.
    • ContentSearch can optionally handle offset as an argument.
    • ContentSearch can filter by keyword on title or body field.
    • Node fragment returns created and path "alias" fields.
    • Results can be returned matching ContentSearchResult interface (content, pageInfo, and eventually facets).
    • Content data includes a truncated plain text body and url path alias.

5.2.2​

Patch Changes​

  • b2d82cf: truncate gesso prefixed fields that were longer than 32 chars

5.2.1​

Patch Changes​

  • a6fa656: Add a limit parameter to the useTag hook
  • f88adaf: prefix all cms plugin fields, remap plugins to prefixed plugin names, conditionally query CMScontent types
  • 788f368: add accidentally removed entityReferences back into NodeArticle fragment

5.2.0​

Minor Changes​

  • f1e3667: Improve the caching for the Drupal graphQL Client method and expose it.

5.1.3​

Patch Changes​

  • 5054e1d: Added the user UUID field to the buildUser for Drupal users.

5.1.2​

Patch Changes​

  • 53eced2: Fix issue with redirects improperly labelled, source and destination swapped

5.1.1​

Patch Changes​

  • 5d67fcf: Implemented logic to support Drupal Login & Logout

5.1.0​

Minor Changes​

  • 387fdfa: Updates Redirect interface to a more defined specification, adds Redirects config to create-nextjs

Patch Changes​

  • 8635e1e: Fixes issue with drupal redirects plugin not being exported

5.0.2​

Patch Changes​

  • 8d3fee2: Implemented support for working-copy revision to the drupal provider

5.0.1​

Patch Changes​

  • 352ef12: Update dependencies and clean up dependency tree
  • 6faa87d: Update drupal plugins to take both arrays and flat values

5.0.0​

Major Changes​

  • bff9b4a: Update useCms imports to cms

Patch Changes​

  • Updated dependencies [bff9b4a]
  • Updated dependencies [bff9b4a]
    • @acromedia/gesso@5.0.0
    • @acromedia/gesso-cms@5.0.0

4.8.2​

Patch Changes​

  • bcf6c1d: Adds status code to failed request message when trying to pull content from Drupal
  • e1f64c8: Added null value for Divider if no color token is defined.

4.8.1​

Patch Changes​

  • 54f1216: Remove outdated license settings in package.json

4.8.0​

Minor Changes​

  • 3b16e0d: Added ability for Divider plugin to handle pre-defined dividerColor token values in addition to valid css hex code.

4.7.0​

Minor Changes​

  • a3a7020: Adds getForm handler and form plugins for component factory

4.6.0​

Minor Changes​

  • 393bea8: Password Reset/Update support for Drupal.

4.5.0​

Minor Changes​

  • f0c18c8: ComponentFactoryPlugin - Button: add field_external_link to enable Button to open a link in a new tab
  • 7e812e5: Adds grid and grid item component factory plugins

4.4.1​

Patch Changes​

  • 0d98af9: Strap factory was missing some optional chaining

4.4.0​

Minor Changes​

  • 0e01945: Implemented the button plugin and changed Buttons plugin

Patch Changes​

  • 372826d: updates Strap plugin to use featured object for feature image
  • 12c9aeb: updates the imports for query override functions to use gesso core
  • fff4c4c: fix: spacer plugin height and width props not working in drupal

4.3.2​

Patch Changes​

  • edc0ea0: Update @types/react
  • e46a974: Fixes issue with create-nextjs and cleans up various small items

4.3.1​

Patch Changes​

  • 85164af: Throw a better error message when building content output when there is an issue with pargraph structure.

4.3.0​

Minor Changes​

  • a6f51dd: Added support for next.js preview mode.

Patch Changes​

  • a1803c8: updates Section plugin to use background prop
  • 8ed63b9: enhances the flexibility of the Buttons plugin by allowing it to handle multiple icon scenarios and ensures the correct rendering based on the provided data.

4.2.0​

Minor Changes​

  • 6b468c5: Add limit option from config into gesso drupal getRoutes.

Patch Changes​

  • 57826f9: fix strap plugin to use background prop and fix issue that was allowing long words to go past containers max-width
  • ef3b420: Fixes featured flag for card and cards plugins

4.1.1​

Patch Changes​

  • 36dcf78: removes references to unused Carousel and HeroBanner plugins which were never fully implemented and became redundant with addition of SlideCarouselWrapper plugin and paragraph type
  • 1453486: Fixed props in componentFactory card

4.1.0​

Minor Changes​

  • 9ef4fe6: Adds redirect status code to Drupal provider getRedirects response
  • 7ce641f: adds SlideCarouselWrapper and Card plugins. Tests and updates dependencies and configs as needed.

4.0.0​

Major Changes​

  • f49ee1f: gesso v4 version bump

Patch Changes​

  • Updated dependencies [f49ee1f]
  • Updated dependencies [80e1851]
  • Updated dependencies [f49ee1f]
  • Updated dependencies [f49ee1f]
    • @acromedia/gesso-cms@4.0.0
    • @acromedia/gesso@4.0.0

3.16.0​

Minor Changes​

  • c96d879: Adds Buttons paragraph plugin for Component Factory, Updates Icon component to accept fontAwesomeIcon as a string representing the icon name

Patch Changes​

  • ebd0186: Adds serverside get methods for all hooks in cms provider

3.15.1​

Patch Changes​

  • 7d40634: Updates graphql query fragment grouping labels
  • 774a968: Fixes prop mapping for icon position of Tabs plugin

3.15.0​

Minor Changes​

  • 57d5974: adds Drupal plugin for EmbedCode component

Patch Changes​

  • 111ae82: Revert v4 and deploy v3.14.4
  • fdb775b: Image plugin width defaults to image width unless specified
  • 9fb35d5: fixed props that did not connect to the right data
  • 257465a: fixed props being passed to the tabs component

4.0.0​

Major Changes​

  • b8f59f1: Fix image alignment on drupal CF plugin

Patch Changes​

  • 81cd360: Added a default width to the drupal image component to ensure the image doesn't grow beyond it's container

3.14.3​

Patch Changes​

  • f683449: Updates Component Factory plugin to support new DrupalMedia fields
  • c5ee4d7: - adjusts css marginBottom calculation for NativeHTML elements to be element fontSize multiplied by 1.6
    • corrects stylesheet issue that was preventing p tags from having marginBottom in Drupal WYSIWYG
    • updates Storybook explanation for common Drupal WYSIWYG usage
    • adds tests to verify NativeHTML default styles and classes are properly picked up by BasicContent plugin
  • 8db4d5e: Fix issue with Image destructuring a possible undefined value

3.14.2​

Patch Changes​

  • cc71723: - Defaults AccordionSummary typography to h4 variant in design system.
    • Exposes the Square prop to Drupal which creates a field enabling the borderRadius top and bottom fields to be set separately.
    • Updates Storybook description for clarity on how the Square prop interacts with borderRadius, roundedTop and roundedBottom props.
  • 42523cf: Fixes issue with Spacer plugin not handling boolean fields correctly

3.14.1​

Patch Changes​

  • 5cd173e: Adds support for new card wysiwig field, backwards compatible with old field

3.14.0​

Minor Changes​

  • bf537cc: Adds Spacer plugin for Component Factory

3.13.0​

Minor Changes​

  • b1602e9: Adds NativeHTML for basic_content plugin, Fix minor bugs with types structure not aligning with current data structure

Patch Changes​

  • fcacb55: - fix: update Cards plugin in Drupal to pull correct field values for border and shadow.
    • fix: update design system Card component so that a button is only rendered if link url is present and default backgroundColor to correct token value
  • e660f24: Adds match height to card plugins, adds styling to Card to handle match button height when multiple cards displayed with match height"
  • 2aee2d5: Updates Card to accept ReactNode instead of strings for its title/content fields, update card plugin component factory to wrap grid"
  • e9c71b52: add in missing export for useUser hook

3.12.0​

Minor Changes​

  • 6c4bca1: Updates @acromedia/drupal to match latest spec for gesso_graphql drupal module, Updates Card to align classnames Card content now contains classname card--content

3.11.0​

Minor Changes​

  • cb85946: Adds HeroBanner Component Factory plugin
  • fa2a9bc: Adds Hero Banner plugin for Component Factory

Patch Changes​

  • c7bd2ff: Added @acromedia/gesso as a peerDependency

3.10.2​

Patch Changes​

  • 8c480e1: Fix Image postioning, Accordion Content

3.10.1​

Patch Changes​

  • e9a58e7: Fix export for componentFactoryPlugins, removes empty types file import in Redirects"
  • d00bb3a: Fixes issue when divider plugin does not have a set divider color"

3.10.0​

Minor Changes​

  • 08504fc: Updates & fixes for Component Factory, default plugins for drupal provider

3.9.1​

Patch Changes​

  • f119dff: Refactor provider queries to use fragment structure which can be extended by end user. Removing the useage of toArray.

3.9.0​

Minor Changes​

  • 7f5d6d2: Implemented useUser hook

3.8.0​

Minor Changes​

  • a797def: add export for types and plugins

3.7.0​

Minor Changes​

  • 213295b: Add conjuction/grouping to ContentSearch filters

Patch Changes​

  • 6833962: useTag would crash instead of error on invalid tag
  • bea0325: Normalize Drupal field entity references

3.6.0​

Minor Changes​

  • 879057b: Created getRoutes function in Drupal

3.5.0​

Minor Changes​

  • 2b01440: Add withReferences option to useContent and useContentSearch

3.4.0​

Minor Changes​

  • 55e4e7b: Implement useTags hook functionality

3.3.0​

Minor Changes​

  • 5d99bbc: Add support for custom filters to useContentSearch

3.2.0​

Minor Changes​

  • 036f7bd: Implemented useMenu hook
  • 80a391a: Implemented useContentSearch hook

3.1.1​

Patch Changes​

  • 0be564a: Drupal provider clean the data output of remaining field data. Removes the array wrapping caused by toArray on graphql query.

3.1.0​

Minor Changes​

  • 7bb4ab0: Implemented useContent call to Drupal

3.0.2​

Patch Changes​

  • @acromedia/gesso-cms@3.2.3

3.0.1​

Patch Changes​

  • Updated dependencies [892d409]
    • @acromedia/gesso-cms@3.2.2