docs: show when condition in workflows reference (#12566)

This commit is contained in:
Shahed Nasser
2025-05-21 19:34:55 +03:00
committed by GitHub
parent bc965eb6aa
commit 32c89abe67
3 changed files with 43 additions and 9 deletions
@@ -19,6 +19,7 @@ export type CodeBlockActionsProps = {
onApiTesting?: React.Dispatch<React.SetStateAction<boolean>>
noReport?: boolean
noCopy?: boolean
noAskAi?: boolean
}
export const CodeBlockActions = ({
@@ -32,6 +33,7 @@ export const CodeBlockActions = ({
onApiTesting,
noReport = false,
noCopy = false,
noAskAi = false,
}: CodeBlockActionsProps) => {
const iconClassName = [
"text-medusa-contrast-fg-secondary",
@@ -75,7 +77,9 @@ export const CodeBlockActions = ({
]
)}
>
<CodeBlockAskAiAction source={source} inHeader={inHeader} />
{!noAskAi && (
<CodeBlockAskAiAction source={source} inHeader={inHeader} />
)}
{canShowApiTesting && (
<Tooltip
text="Test API"
@@ -92,6 +92,7 @@ export const CodeBlock = ({
style,
forceNoTitle = false,
animateTokenHighlights,
noAskAi = false,
...rest
}: CodeBlockProps) => {
if (!source && typeof children === "string") {
@@ -306,6 +307,7 @@ export const CodeBlock = ({
isCollapsed: collapsibleType !== undefined && collapsibleResult.collapsed,
inInnerCode: hasInnerCodeBlock,
showGradientBg: scrollable,
noAskAi,
}),
[
source,
@@ -317,6 +319,7 @@ export const CodeBlock = ({
collapsibleResult,
hasInnerCodeBlock,
scrollable,
noAskAi,
]
)
@@ -457,7 +460,7 @@ export const CodeBlock = ({
</code>
</pre>
{!hasInnerCodeBlock &&
(!noCopy || !noReport || canShowApiTesting) && (
(!noCopy || !noReport || canShowApiTesting || !noAskAi) && (
<CodeBlockActions
{...actionsProps}
inHeader={false}
@@ -5,7 +5,7 @@ import clsx from "clsx"
import Link from "next/link"
import React, { useEffect, useMemo, useRef, useState } from "react"
import { WorkflowStepUi } from "types"
import { InlineCode, MarkdownContent, Tooltip } from "../../.."
import { CodeBlock, MarkdownContent, Tooltip } from "../../.."
import { Bolt, InformationCircle } from "@medusajs/icons"
import { getBrowser } from "../../../../utils"
@@ -53,18 +53,33 @@ export const WorkflowDiagramStepNode = ({ step }: WorkflowDiagramNodeProps) => {
}
}, [ref.current])
const unindentLines = (str: string) => {
let minIndent = 4
return str
.split("\n")
.reverse()
.map((line, index) => {
const trimmedStartLine = line.trimStart()
const numberOfSpaces = line.length - trimmedStartLine.length
if (index === 0) {
minIndent = numberOfSpaces || minIndent
}
if (numberOfSpaces >= minIndent) {
return " ".repeat(numberOfSpaces - 4) + trimmedStartLine
}
return line
})
.reverse()
.join("\n")
}
return (
<Tooltip
tooltipClassName="!text-left max-w-[300px] text-pretty overflow-scroll"
tooltipChildren={
<>
<h4 className="text-compact-x-small-plus">{step.name}</h4>
{step.when && (
<span className="block py-docs_0.25">
Runs only if a <InlineCode>when</InlineCode> condition is
satisfied.
</span>
)}
{description && (
<MarkdownContent
allowedElements={["a", "strong", "code"]}
@@ -73,6 +88,18 @@ export const WorkflowDiagramStepNode = ({ step }: WorkflowDiagramNodeProps) => {
{description}
</MarkdownContent>
)}
{step.when?.condition && (
<CodeBlock
lang="typescript"
source={unindentLines(step.when.condition)}
noReport
noCopy
noAskAi
noLineNumbers
title="when Condition"
wrapperClassName="mt-docs_0.5"
/>
)}
</>
}
clickable={true}