UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Office 365.

56 lines 3.19 kB
define(["require", "exports", "tslib", "react", "./Icon.types", "../Image/Image", "../Image/Image.types", "../../Utilities", "./FontIcon"], function (require, exports, tslib_1, React, Icon_types_1, Image_1, Image_types_1, Utilities_1, FontIcon_1) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var getClassNames = Utilities_1.classNamesFunction({ disableCaching: true }); var IconBase = /** @class */ (function (_super) { tslib_1.__extends(IconBase, _super); function IconBase(props) { var _this = _super.call(this, props) || this; _this.onImageLoadingStateChange = function (state) { if (_this.props.imageProps && _this.props.imageProps.onLoadingStateChange) { _this.props.imageProps.onLoadingStateChange(state); } if (state === Image_types_1.ImageLoadState.error) { _this.setState({ imageLoadError: true }); } }; _this.state = { imageLoadError: false }; return _this; } IconBase.prototype.render = function () { var _a = this.props, className = _a.className, styles = _a.styles, iconName = _a.iconName, imageErrorAs = _a.imageErrorAs, theme = _a.theme; var isPlaceholder = typeof iconName === 'string' && iconName.length === 0; var isImage = this.props.iconType === Icon_types_1.IconType.image || this.props.iconType === Icon_types_1.IconType.Image || !!this.props.imageProps; var _b = FontIcon_1.getIconContent(iconName), iconClassName = _b.iconClassName, children = _b.children; var classNames = getClassNames(styles, { theme: theme, className: className, iconClassName: iconClassName, isImage: isImage, isPlaceholder: isPlaceholder }); var RootType = isImage ? 'div' : 'i'; var nativeProps = Utilities_1.getNativeProps(this.props, Utilities_1.htmlElementProperties, ['aria-label']); var imageLoadError = this.state.imageLoadError; var imageProps = tslib_1.__assign({}, this.props.imageProps, { onLoadingStateChange: this.onImageLoadingStateChange }); var ImageType = (imageLoadError && imageErrorAs) || Image_1.Image; var ariaLabel = this.props.ariaLabel || this.props['aria-label']; var containerProps = ariaLabel ? { 'aria-label': ariaLabel } : { role: 'presentation', 'aria-hidden': imageProps.alt || imageProps['aria-labelledby'] ? false : true }; return (React.createElement(RootType, tslib_1.__assign({ "data-icon-name": iconName }, containerProps, nativeProps, { className: classNames.root }), isImage ? React.createElement(ImageType, tslib_1.__assign({}, imageProps)) : children)); }; return IconBase; }(React.Component)); exports.IconBase = IconBase; }); //# sourceMappingURL=Icon.base.js.map