* Adding enum values for Enum Type in Swagger ReadOnly documentation * Adding enum values for Enum Type in Swagger ReadOnly documentation (optimisation) and also adding default/example value * Add new display enums, defaults, and examples when not in TIO mode (another way to have enums values in swagger.json) * Fix npm test result * review corrections * fix: don't render parameter description if field is empty * use cross-version schema variable to access properties * pass className through Markdown component usage * add per-field classNames to Markdown for easier styling + testing * remove parameter Example field (out-of-scope for this PR) * get default value from schema instead of top-level parameter * tests: add e2e cases for swagger2 and oas3 * remove `swagger-petstore-enum.json` the purpose of this file lives on in the e2e test specs folder * add missing proptypes validation * use `classnames` to more effectively union class names
35 lines
900 B
JavaScript
35 lines
900 B
JavaScript
import React from "react"
|
|
import PropTypes from "prop-types"
|
|
import ReactMarkdown from "react-markdown"
|
|
import cx from "classnames"
|
|
import { Parser, HtmlRenderer } from "commonmark"
|
|
import { OAS3ComponentWrapFactory } from "../helpers"
|
|
import { sanitizer } from "core/components/providers/markdown"
|
|
|
|
export const Markdown = ({ source, className = "" }) => {
|
|
if ( source ) {
|
|
const parser = new Parser()
|
|
const writer = new HtmlRenderer()
|
|
const html = writer.render(parser.parse(source || ""))
|
|
const sanitized = sanitizer(html)
|
|
|
|
if ( !source || !html || !sanitized ) {
|
|
return null
|
|
}
|
|
|
|
return (
|
|
<ReactMarkdown
|
|
source={sanitized}
|
|
className={cx(className, "renderedMarkdown")}
|
|
/>
|
|
)
|
|
}
|
|
return null
|
|
}
|
|
Markdown.propTypes = {
|
|
source: PropTypes.string,
|
|
className: PropTypes.string,
|
|
}
|
|
|
|
export default OAS3ComponentWrapFactory(Markdown)
|