UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Office 365.

92 lines 3.98 kB
import * as tslib_1 from "tslib"; import * as React from 'react'; import { getRTL } from 'office-ui-fabric-react/lib/Utilities'; import { FocusZone, FocusZoneDirection } from 'office-ui-fabric-react/lib/FocusZone'; import { TextField } from 'office-ui-fabric-react/lib/TextField'; import { Image, ImageFit } from 'office-ui-fabric-react/lib/Image'; import { Icon } from 'office-ui-fabric-react/lib/Icon'; import { List } from 'office-ui-fabric-react/lib/List'; import { mergeStyleSets, getTheme, getFocusStyle } from 'office-ui-fabric-react/lib/Styling'; import { createListItems } from '@uifabric/example-data'; var theme = getTheme(); var palette = theme.palette, semanticColors = theme.semanticColors, fonts = theme.fonts; var classNames = mergeStyleSets({ itemCell: [ getFocusStyle(theme, { inset: -1 }), { minHeight: 54, padding: 10, boxSizing: 'border-box', borderBottom: "1px solid " + semanticColors.bodyDivider, display: 'flex', selectors: { '&:hover': { background: palette.neutralLight } } } ], itemImage: { flexShrink: 0 }, itemContent: { marginLeft: 10, overflow: 'hidden', flexGrow: 1 }, itemName: [ fonts.xLarge, { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } ], itemIndex: { fontSize: fonts.small.fontSize, color: palette.neutralTertiary, marginBottom: 10 }, chevron: { alignSelf: 'center', marginLeft: 10, color: palette.neutralTertiary, fontSize: fonts.large.fontSize, flexShrink: 0 } }); var ListBasicExample = /** @class */ (function (_super) { tslib_1.__extends(ListBasicExample, _super); function ListBasicExample(props) { var _this = _super.call(this, props) || this; _this._onFilterChanged = function (_, text) { _this.setState({ filterText: text, items: text ? _this._originalItems.filter(function (item) { return item.name.toLowerCase().indexOf(text.toLowerCase()) >= 0; }) : _this._originalItems }); }; _this._originalItems = props.items || createListItems(5000); _this.state = { filterText: '', items: _this._originalItems }; return _this; } ListBasicExample.prototype.render = function () { var _a = this.state.items, items = _a === void 0 ? [] : _a; var resultCountText = items.length === this._originalItems.length ? '' : " (" + items.length + " of " + this._originalItems.length + " shown)"; return (React.createElement(FocusZone, { direction: FocusZoneDirection.vertical }, React.createElement(TextField, { label: 'Filter by name' + resultCountText, onChange: this._onFilterChanged }), React.createElement(List, { items: items, onRenderCell: this._onRenderCell }))); }; ListBasicExample.prototype._onRenderCell = function (item, index) { return (React.createElement("div", { className: classNames.itemCell, "data-is-focusable": true }, React.createElement(Image, { className: classNames.itemImage, src: item.thumbnail, width: 50, height: 50, imageFit: ImageFit.cover }), React.createElement("div", { className: classNames.itemContent }, React.createElement("div", { className: classNames.itemName }, item.name), React.createElement("div", { className: classNames.itemIndex }, "Item " + index), React.createElement("div", null, item.description)), React.createElement(Icon, { className: classNames.chevron, iconName: getRTL() ? 'ChevronLeft' : 'ChevronRight' }))); }; return ListBasicExample; }(React.Component)); export { ListBasicExample }; //# sourceMappingURL=List.Basic.Example.js.map