1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.ShimmeredDetailsListBase = void 0;
|
4 | var tslib_1 = require("tslib");
|
5 | var React = require("react");
|
6 | var Utilities_1 = require("../../Utilities");
|
7 | var Selection_1 = require("../../Selection");
|
8 | var DetailsList_1 = require("./DetailsList");
|
9 | var Shimmer_1 = require("../../Shimmer");
|
10 | var DetailsList_types_1 = require("./DetailsList.types");
|
11 | var DetailsRow_styles_1 = require("./DetailsRow.styles");
|
12 | var getClassNames = Utilities_1.classNamesFunction();
|
13 | var SHIMMER_INITIAL_ITEMS = 10;
|
14 | var DEFAULT_SHIMMER_HEIGHT = 7;
|
15 | var SHIMMER_LINE_VS_CELL_WIDTH_RATIO = 0.95;
|
16 | var ShimmeredDetailsListBase = (function (_super) {
|
17 | tslib_1.__extends(ShimmeredDetailsListBase, _super);
|
18 | function ShimmeredDetailsListBase(props) {
|
19 | var _this = _super.call(this, props) || this;
|
20 | _this._onRenderShimmerPlaceholder = function (index, rowProps) {
|
21 | var onRenderCustomPlaceholder = _this.props.onRenderCustomPlaceholder;
|
22 | var placeholderElements = onRenderCustomPlaceholder
|
23 | ? onRenderCustomPlaceholder(rowProps, index, _this._renderDefaultShimmerPlaceholder)
|
24 | : _this._renderDefaultShimmerPlaceholder(rowProps);
|
25 | return React.createElement(Shimmer_1.Shimmer, { customElementsGroup: placeholderElements });
|
26 | };
|
27 | _this._renderDefaultShimmerPlaceholder = function (rowProps) {
|
28 | var columns = rowProps.columns, compact = rowProps.compact, selectionMode = rowProps.selectionMode, checkboxVisibility = rowProps.checkboxVisibility, _a = rowProps.cellStyleProps, cellStyleProps = _a === void 0 ? DetailsRow_styles_1.DEFAULT_CELL_STYLE_PROPS : _a;
|
29 | var rowHeight = DetailsRow_styles_1.DEFAULT_ROW_HEIGHTS.rowHeight, compactRowHeight = DetailsRow_styles_1.DEFAULT_ROW_HEIGHTS.compactRowHeight;
|
30 |
|
31 | var gapHeight = compact ? compactRowHeight : rowHeight + 1;
|
32 | var shimmerElementsRow = [];
|
33 | var showCheckbox = selectionMode !== Selection_1.SelectionMode.none && checkboxVisibility !== DetailsList_types_1.CheckboxVisibility.hidden;
|
34 | if (showCheckbox) {
|
35 | shimmerElementsRow.push(React.createElement(Shimmer_1.ShimmerElementsGroup, { key: 'checkboxGap', shimmerElements: [{ type: Shimmer_1.ShimmerElementType.gap, width: '40px', height: gapHeight }] }));
|
36 | }
|
37 | columns.forEach(function (column, columnIdx) {
|
38 | var shimmerElements = [];
|
39 | var groupWidth = cellStyleProps.cellLeftPadding +
|
40 | cellStyleProps.cellRightPadding +
|
41 | column.calculatedWidth +
|
42 | (column.isPadded ? cellStyleProps.cellExtraRightPadding : 0);
|
43 | shimmerElements.push({
|
44 | type: Shimmer_1.ShimmerElementType.gap,
|
45 | width: cellStyleProps.cellLeftPadding,
|
46 | height: gapHeight,
|
47 | });
|
48 | if (column.isIconOnly) {
|
49 | shimmerElements.push({
|
50 | type: Shimmer_1.ShimmerElementType.line,
|
51 | width: column.calculatedWidth,
|
52 | height: column.calculatedWidth,
|
53 | });
|
54 | shimmerElements.push({
|
55 | type: Shimmer_1.ShimmerElementType.gap,
|
56 | width: cellStyleProps.cellRightPadding,
|
57 | height: gapHeight,
|
58 | });
|
59 | }
|
60 | else {
|
61 | shimmerElements.push({
|
62 | type: Shimmer_1.ShimmerElementType.line,
|
63 | width: column.calculatedWidth * SHIMMER_LINE_VS_CELL_WIDTH_RATIO,
|
64 | height: DEFAULT_SHIMMER_HEIGHT,
|
65 | });
|
66 | shimmerElements.push({
|
67 | type: Shimmer_1.ShimmerElementType.gap,
|
68 | width: cellStyleProps.cellRightPadding +
|
69 | (column.calculatedWidth - column.calculatedWidth * SHIMMER_LINE_VS_CELL_WIDTH_RATIO) +
|
70 | (column.isPadded ? cellStyleProps.cellExtraRightPadding : 0),
|
71 | height: gapHeight,
|
72 | });
|
73 | }
|
74 | shimmerElementsRow.push(React.createElement(Shimmer_1.ShimmerElementsGroup, { key: columnIdx, width: groupWidth + "px", shimmerElements: shimmerElements }));
|
75 | });
|
76 |
|
77 |
|
78 | shimmerElementsRow.push(React.createElement(Shimmer_1.ShimmerElementsGroup, { key: 'endGap', width: '100%', shimmerElements: [{ type: Shimmer_1.ShimmerElementType.gap, width: '100%', height: gapHeight }] }));
|
79 | return React.createElement("div", { style: { display: 'flex' } }, shimmerElementsRow);
|
80 | };
|
81 | _this._shimmerItems = props.shimmerLines ? new Array(props.shimmerLines) : new Array(SHIMMER_INITIAL_ITEMS);
|
82 | return _this;
|
83 | }
|
84 | ShimmeredDetailsListBase.prototype.render = function () {
|
85 | var _a = this.props, detailsListStyles = _a.detailsListStyles, enableShimmer = _a.enableShimmer, items = _a.items, listProps = _a.listProps, onRenderCustomPlaceholder = _a.onRenderCustomPlaceholder, removeFadingOverlay = _a.removeFadingOverlay, shimmerLines = _a.shimmerLines, styles = _a.styles, theme = _a.theme, ariaLabelForGrid = _a.ariaLabelForGrid, ariaLabelForShimmer = _a.ariaLabelForShimmer, restProps = tslib_1.__rest(_a, ["detailsListStyles", "enableShimmer", "items", "listProps", "onRenderCustomPlaceholder", "removeFadingOverlay", "shimmerLines", "styles", "theme", "ariaLabelForGrid", "ariaLabelForShimmer"]);
|
86 | var listClassName = listProps && listProps.className;
|
87 | this._classNames = getClassNames(styles, {
|
88 | theme: theme,
|
89 | });
|
90 | var newListProps = tslib_1.__assign(tslib_1.__assign({}, listProps), {
|
91 |
|
92 |
|
93 | className: enableShimmer && !removeFadingOverlay ? Utilities_1.css(this._classNames.root, listClassName) : listClassName });
|
94 | return (React.createElement(DetailsList_1.DetailsList, tslib_1.__assign({}, restProps, { styles: detailsListStyles, items: enableShimmer ? this._shimmerItems : items, isPlaceholderData: enableShimmer, ariaLabelForGrid: (enableShimmer && ariaLabelForShimmer) || ariaLabelForGrid, onRenderMissingItem: this._onRenderShimmerPlaceholder, listProps: newListProps })));
|
95 | };
|
96 | return ShimmeredDetailsListBase;
|
97 | }(React.Component));
|
98 | exports.ShimmeredDetailsListBase = ShimmeredDetailsListBase;
|
99 |
|
\ | No newline at end of file |