import { Box } from '@stoplight/mosaic'; import { Dictionary } from '@stoplight/types'; import * as React from 'react'; import { useJSVOptionsContext } from '../../contexts'; export interface IProperties { required: boolean; deprecated: boolean; validations: Dictionary; } export const useHasProperties = ({ required, deprecated, validations: { readOnly, writeOnly } }: IProperties) => { const { viewMode } = useJSVOptionsContext(); const showVisibilityValidations = viewMode === 'standalone' && !!readOnly !== !!writeOnly; return deprecated || showVisibilityValidations || required; }; export const Properties: React.FunctionComponent = ({ required, deprecated, validations: { readOnly, writeOnly }, }) => { const { viewMode } = useJSVOptionsContext(); // Show readOnly writeOnly validations only in standalone mode and only if just one of them is present const showVisibilityValidations = viewMode === 'standalone' && !!readOnly !== !!writeOnly; const visibility = showVisibilityValidations ? ( readOnly ? ( read-only ) : ( write-only ) ) : null; return ( <> {deprecated ? ( deprecated ) : null} {visibility} {required && ( required )} ); };