@carbon/react
Version:
React components for the Carbon Design System
208 lines (207 loc) • 7.76 kB
TypeScript
/**
* Copyright IBM Corp. 2016, 2025
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
import PropTypes from 'prop-types';
import { PropsWithChildren } from 'react';
export type DeprecatedCodeSnippetAlignment = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left-bottom' | 'left-top' | 'right-bottom' | 'right-top';
export type NewCodeSnippetAlignment = 'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'left-end' | 'left-start' | 'right-end' | 'right-start';
export type CodeSnippetAlignment = DeprecatedCodeSnippetAlignment | NewCodeSnippetAlignment;
export interface CodeSnippetProps {
/**
* Specify how the trigger should align with the tooltip
*/
align?: CodeSnippetAlignment;
/**
* **Experimental**: Will attempt to automatically align the tooltip
*/
autoAlign?: boolean;
/**
* Specify a label to be read by screen readers on the containing textbox
* node
*/
['aria-label']?: string;
/**
* Deprecated, please use `aria-label` instead.
* Specify a label to be read by screen readers on the containing textbox
* node
*/
ariaLabel?: string;
/**
* Specify an optional className to be applied to the container node
*/
className?: string;
/**
* Specify the description for the Copy Button
*/
copyButtonDescription?: string;
/**
* Optional text to copy. If not specified, the `children` node's `innerText`
* will be used as the copy value.
*/
copyText?: string;
/**
* Specify whether or not the CodeSnippet should be disabled
*/
disabled?: boolean;
/**
* Specify the string displayed when the snippet is copied
*/
feedback?: string;
/**
* Specify the time it takes for the feedback message to timeout
*/
feedbackTimeout?: number;
/**
* Specify whether or not a copy button should be used/rendered.
*/
hideCopyButton?: boolean;
/**
* Specify whether you are using the light variant of the Code Snippet,
* typically used for inline snippet to display an alternate color
*/
light?: boolean;
/**
* Specify the maximum number of rows to be shown when in collapsed view
*/
maxCollapsedNumberOfRows?: number;
/**
* Specify the maximum number of rows to be shown when in expanded view
*/
maxExpandedNumberOfRows?: number;
/**
* Specify the minimum number of rows to be shown when in collapsed view
*/
minCollapsedNumberOfRows?: number;
/**
* Specify the minimum number of rows to be shown when in expanded view
*/
minExpandedNumberOfRows?: number;
/**
* An optional handler to listen to the `onClick` even fired by the Copy
* Button
*/
onClick?: (e: MouseEvent) => void;
/**
* Specify a string that is displayed when the Code Snippet has been
* interacted with to show more lines
*/
showLessText?: string;
/**
* Specify a string that is displayed when the Code Snippet text is more
* than 15 lines
*/
showMoreText?: string;
/**
* Provide the type of Code Snippet
*/
type?: 'single' | 'inline' | 'multi';
/**
* Specify whether or not to wrap the text.
*/
wrapText?: boolean;
}
declare function CodeSnippet({ align, autoAlign, className, type, children, disabled, feedback, feedbackTimeout, onClick, ['aria-label']: ariaLabel, ariaLabel: deprecatedAriaLabel, copyText, copyButtonDescription, light, showMoreText, showLessText, hideCopyButton, wrapText, maxCollapsedNumberOfRows, maxExpandedNumberOfRows, minCollapsedNumberOfRows, minExpandedNumberOfRows, ...rest }: PropsWithChildren<CodeSnippetProps>): import("react/jsx-runtime").JSX.Element;
declare namespace CodeSnippet {
var propTypes: {
/**
* Specify how the trigger should align with the tooltip
*/
align: (props: any, propName: any, componentName: any, ...rest: any[]) => any;
/**
* Specify a label to be read by screen readers on the containing textbox
* node
*/
"aria-label": PropTypes.Requireable<string>;
/**
* Deprecated, please use `aria-label` instead.
* Specify a label to be read by screen readers on the containing textbox
* node
*/
ariaLabel: (props: any, propName: any, componentName: any, ...rest: any[]) => any;
/**
* **Experimental**: Will attempt to automatically align the tooltip
*/
autoAlign: PropTypes.Requireable<boolean>;
/**
* Provide the content of your CodeSnippet as a node or string
*/
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
/**
* Specify an optional className to be applied to the container node
*/
className: PropTypes.Requireable<string>;
/**
* Specify the description for the Copy Button
*/
copyButtonDescription: PropTypes.Requireable<string>;
/**
* Optional text to copy. If not specified, the `children` node's `innerText`
* will be used as the copy value.
*/
copyText: PropTypes.Requireable<string>;
/**
* Specify whether or not the CodeSnippet should be disabled
*/
disabled: PropTypes.Requireable<boolean>;
/**
* Specify the string displayed when the snippet is copied
*/
feedback: PropTypes.Requireable<string>;
/**
* Specify the time it takes for the feedback message to timeout
*/
feedbackTimeout: PropTypes.Requireable<number>;
/**
* Specify whether or not a copy button should be used/rendered.
*/
hideCopyButton: PropTypes.Requireable<boolean>;
/**
* Specify whether you are using the light variant of the Code Snippet,
* typically used for inline snippet to display an alternate color
*/
light: (props: any, propName: any, componentName: any, ...rest: any[]) => any;
/**
* Specify the maximum number of rows to be shown when in collapsed view
*/
maxCollapsedNumberOfRows: PropTypes.Requireable<number>;
/**
* Specify the maximum number of rows to be shown when in expanded view
*/
maxExpandedNumberOfRows: PropTypes.Requireable<number>;
/**
* Specify the minimum number of rows to be shown when in collapsed view
*/
minCollapsedNumberOfRows: PropTypes.Requireable<number>;
/**
* Specify the minimum number of rows to be shown when in expanded view
*/
minExpandedNumberOfRows: PropTypes.Requireable<number>;
/**
* An optional handler to listen to the `onClick` even fired by the Copy
* Button
*/
onClick: PropTypes.Requireable<(...args: any[]) => any>;
/**
* Specify a string that is displayed when the Code Snippet has been
* interacted with to show more lines
*/
showLessText: PropTypes.Requireable<string>;
/**
* Specify a string that is displayed when the Code Snippet text is more
* than 15 lines
*/
showMoreText: PropTypes.Requireable<string>;
/**
* Provide the type of Code Snippet
*/
type: PropTypes.Requireable<string>;
/**
* Specify whether or not to wrap the text.
*/
wrapText: PropTypes.Requireable<boolean>;
};
}
export default CodeSnippet;