office-ui-fabric-react
Version: 
Reusable React components for building experiences for Office 365.
73 lines • 4.9 kB
JavaScript
define(["require", "exports", "tslib", "react", "../../Image", "../../Icon", "../../Utilities", "./DocumentCard.scss"], function (require, exports, tslib_1, React, Image_1, Icon_1, Utilities_1, stylesImport) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var styles = stylesImport;
    var LIST_ITEM_COUNT = 3;
    var DocumentCardPreview = /** @class */ (function (_super) {
        tslib_1.__extends(DocumentCardPreview, _super);
        function DocumentCardPreview() {
            var _this = _super !== null && _super.apply(this, arguments) || this;
            _this._renderPreviewList = function (previewImages) {
                var getOverflowDocumentCountText = _this.props.getOverflowDocumentCountText;
                // Determine how many documents we won't be showing
                var overflowDocumentCount = previewImages.length - LIST_ITEM_COUNT;
                // Determine the overflow text that will be rendered after the preview list.
                var overflowText = overflowDocumentCount
                    ? getOverflowDocumentCountText
                        ? getOverflowDocumentCountText(overflowDocumentCount)
                        : '+' + overflowDocumentCount
                    : null;
                // Create list items for the documents to be shown
                var fileListItems = previewImages.slice(0, LIST_ITEM_COUNT).map(function (file, fileIndex) { return (React.createElement("li", { key: fileIndex },
                    React.createElement(Image_1.Image, { className: Utilities_1.css('ms-DocumentCardPreview-fileListIcon', styles.fileListIcon), src: file.iconSrc, role: "presentation", alt: "", width: "16px", height: "16px" }),
                    React.createElement("a", { href: file.url }, file.name))); });
                return (React.createElement("div", null,
                    React.createElement("ul", { className: Utilities_1.css('ms-DocumentCardPreview-fileList', styles.fileList) }, fileListItems),
                    overflowText && (React.createElement("span", { className: Utilities_1.css('ms-DocumentCardPreview-fileListMore', styles.fileListMore) }, overflowText))));
            };
            return _this;
        }
        DocumentCardPreview.prototype.render = function () {
            var previewImages = this.props.previewImages;
            var style, preview;
            var isFileList = false;
            if (previewImages.length > 1) {
                // Render a list of files
                preview = this._renderPreviewList(previewImages);
                isFileList = true;
            }
            else if (previewImages.length === 1) {
                // Render a single preview
                preview = this._renderPreviewImage(previewImages[0]);
                // Override the border color if an accent color was provided
                if (previewImages[0].accentColor) {
                    style = {
                        borderBottomColor: previewImages[0].accentColor
                    };
                }
            }
            return (React.createElement("div", { className: Utilities_1.css('ms-DocumentCardPreview', styles.preview, isFileList && 'is-fileList ' + styles.previewIsFileList), style: style }, preview));
        };
        DocumentCardPreview.prototype._renderPreviewImage = function (previewImage) {
            var width = previewImage.width, height = previewImage.height, imageFit = previewImage.imageFit, previewIconProps = previewImage.previewIconProps, previewIconContainerClass = previewImage.previewIconContainerClass;
            var iconContainerClass = previewIconContainerClass
                ? previewIconContainerClass
                : 'ms-DocumentCardPreview-iconContainer';
            if (previewIconProps) {
                return (React.createElement("div", { className: Utilities_1.css(iconContainerClass, styles.previewIconContainer), style: { width: width, height: height } },
                    React.createElement(Icon_1.Icon, tslib_1.__assign({}, previewIconProps))));
            }
            var image = (React.createElement(Image_1.Image, { width: width, height: height, imageFit: imageFit, src: previewImage.previewImageSrc, role: "presentation", alt: "" }));
            var icon;
            if (previewImage.iconSrc) {
                icon = (React.createElement(Image_1.Image, { className: Utilities_1.css('ms-DocumentCardPreview-icon', styles.icon), src: previewImage.iconSrc, role: "presentation", alt: "" }));
            }
            return (React.createElement("div", null,
                image,
                icon));
        };
        return DocumentCardPreview;
    }(Utilities_1.BaseComponent));
    exports.DocumentCardPreview = DocumentCardPreview;
});
//# sourceMappingURL=DocumentCardPreview.js.map