office-ui-fabric-react
Version:
Reusable React components for building experiences for Microsoft 365.
217 lines (216 loc) • 6.28 kB
TypeScript
import * as React from 'react';
import { IStyle, ITheme } from '../../Styling';
import { IRefObject, IStyleFunctionOrObject } from '../../Utilities';
export interface IShimmer {
}
/**
* Shimmer component props.
* {@docCategory Shimmer}
*/
export interface IShimmerProps extends React.AllHTMLAttributes<HTMLElement> {
/**
* @deprecated No longer used.
*/
componentRef?: IRefObject<IShimmer>;
/**
* Sets the width value of the shimmer wave wrapper.
* @defaultvalue 100%
*/
width?: number | string;
/**
* Controls when the shimmer is swapped with actual data through an animated transition.
* @defaultvalue false
*/
isDataLoaded?: boolean;
/**
* Elements to render in one line of the Shimmer.
*/
shimmerElements?: IShimmerElement[];
/**
* Custom elements when necessary to build complex placeholder skeletons.
*/
customElementsGroup?: React.ReactNode;
/**
* Localized string of the status label for screen reader
*/
ariaLabel?: string;
/**
* Call to provide customized styling that will layer on top of the variant rules.
*/
styles?: IStyleFunctionOrObject<IShimmerStyleProps, IShimmerStyles>;
/**
* Additional CSS class(es) to apply to the Shimmer container.
*/
className?: string;
/**
* Theme provided by High-Order Component.
*/
theme?: ITheme;
/**
* Defines an object with possible colors to pass for Shimmer customization used on different backgrounds.
*/
shimmerColors?: IShimmerColors;
}
/**
* Shimmer Elements Interface representing all common properties between Gap, Circle and Line.
* {@docCategory Shimmer}
*/
export interface IShimmerElement {
/**
* Represents the possible type of the shimmer elements: Gap, Circle, Line.
* Required for every element you intend to use.
*/
type: ShimmerElementType;
/**
* Sets the height of the element (ICircle, ILine, IGap) in pixels.
* Read more details for each specific element.
*/
height?: number;
/**
* Sets the width value of the element (ILine, IGap) in pixels.
* Read more details for each specific element.
*/
width?: number | string;
/**
* Sets vertical alignment of the element (ICircle, ILine).
* @defaultvalue center
*/
verticalAlign?: 'top' | 'center' | 'bottom';
}
/**
* Line element interface
* {@docCategory Shimmer}
*/
export interface ILine extends IShimmerElement {
/**
* Sets the height of the shimmer line in pixels.
* @defaultvalue 16px
*/
height?: number;
/**
* Line width value.
* @defaultvalue 100%
*/
width?: number | string;
}
/**
* Circle element interface
* {@docCategory Shimmer}
*/
export interface ICircle extends IShimmerElement {
/**
* Sets the height of the shimmer circle in pixels.
* Minimum supported 10px.
* @defaultvalue 24px
*/
height?: number;
}
/**
* Gap element interface
* {@docCategory Shimmer}
*/
export interface IGap extends IShimmerElement {
/**
* Sets the height of the shimmer gap in pixels.
* @defaultvalue 16px
*/
height?: number;
/**
* Gap width value.
* @defaultvalue 10px
*/
width?: number | string;
}
/**
* Defines props needed to construct styles.
* This represents the simplified set of immutable things which control the class names.
* {@docCategory Shimmer}
*/
export interface IShimmerStyleProps {
/** Boolean flag to trigger fadeIn/fadeOut transition animation when content is loaded. */
isDataLoaded?: boolean;
/** Optional CSS class name for the component attached to the root stylable area. */
className?: string;
/** Theme provided by High-Order Component. */
theme: ITheme;
/** Interval in milliseconds for the adeIn/fadeOut transition animation. */
transitionAnimationInterval?: number;
/** Color to be used as the main background color of Shimmer when not animating. */
shimmerColor?: string;
/** Tip color of the shimmer wave which gradually gets from and to `shimmerColor`. */
shimmerWaveColor?: string;
}
/**
* Represents the stylable areas of the control.
* {@docCategory Shimmer}
*/
export interface IShimmerStyles {
/** Refers to the root wrapper element. */
root?: IStyle;
/** Refers to wrapper element of the shimmer only. */
shimmerWrapper?: IStyle;
/** Refers to gradient element of the shimmer animation only. */
shimmerGradient?: IStyle;
/** Refers to wrapper element of the children only. */
dataWrapper?: IStyle;
/** Styles for the hidden helper element to aid with screen readers. */
screenReaderText?: IStyle;
}
/**
* Describes the possible types for shimmer elements used.
* {@docCategory Shimmer}
*/
export declare enum ShimmerElementType {
/**
* Line element type
*/
line = 1,
/**
* Circle element type
*/
circle = 2,
/**
* Gap element type
*/
gap = 3
}
/**
* Describes the default heights for shimmer elements when omitted in implementation.
* {@docCategory Shimmer}
*/
export declare enum ShimmerElementsDefaultHeights {
/**
* Default height of the line element when not provided by user: 16px
*/
line = 16,
/**
* Default height of the gap element when not provided by user: 16px
*/
gap = 16,
/**
* Default height of the circle element when not provided by user: 24px
*/
circle = 24
}
/**
* Interface describing the possible color customizations of Shimmer.
* {@docCategory Shimmer}
*/
export interface IShimmerColors {
/**
* Defines the main background color which is the color you see when the wave is not animating.
* @defaultvalue theme.palette.neutralLight
*/
shimmer?: string;
/**
* Defines the tip color of the shimmer wave which gradually gets from and to `shimmer` color.
* @defaultvalue theme.palette.neutralLighter
*/
shimmerWave?: string;
/**
* Defines the background color of the space in between and around shimmer elements (borders, gaps and
* rounded corners).
* @defaultvalue theme.palette.white
*/
background?: string;
}