UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Office 365.

112 lines (110 loc) 3.25 kB
"use strict"; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; /* tslint:disable:no-unused-variable */ var React = require("react"); /* tslint:enable:no-unused-variable */ var index_1 = require("../../../../index"); var _columns = [ { key: 'name', name: 'Name', fieldName: 'name', minWidth: 100, maxWidth: 200, isResizable: true }, { key: 'color', name: 'Color', fieldName: 'color', minWidth: 100, maxWidth: 200 } ]; var _items = [ { key: 'a', name: 'a', color: 'red' }, { key: 'b', name: 'b', color: 'red' }, { key: 'c', name: 'c', color: 'blue' }, { key: 'd', name: 'd', color: 'blue' }, { key: 'e', name: 'e', color: 'blue' } ]; function groupBy(items, fieldName) { var groups = items.reduce(function (currentGroups, currentItem, index) { var lastGroup = currentGroups[currentGroups.length - 1]; var fieldValue = currentItem[fieldName]; if (!lastGroup || lastGroup.value !== fieldValue) { currentGroups.push({ key: 'group' + fieldValue + index, name: "By \"" + fieldValue + "\"", value: fieldValue, startIndex: index, level: 0, count: 0 }); } if (lastGroup) { lastGroup.count = index - lastGroup.startIndex; } return currentGroups; }, []); // Fix last group count var lastGroup = groups[groups.length - 1]; if (lastGroup) { lastGroup.count = items.length - lastGroup.startIndex; } return groups; } var DetailsListGroupedExample = (function (_super) { __extends(DetailsListGroupedExample, _super); function DetailsListGroupedExample() { var _this = _super.call(this) || this; _this.state = { items: _items }; return _this; } DetailsListGroupedExample.prototype.render = function () { var _this = this; var items = this.state.items; return (React.createElement(index_1.Fabric, { className: 'foo' }, React.createElement(index_1.Button, { onClick: function () { return _this._addItem(); } }, "Add an item"), React.createElement(index_1.DetailsList, { items: items, groups: groupBy(items, 'color'), columns: _columns }))); }; DetailsListGroupedExample.prototype._addItem = function () { var items = this.state.items; this.setState({ items: items.concat([{ key: 'item-' + items.length, name: 'New item ' + items.length, color: 'blue' }]) }); }; return DetailsListGroupedExample; }(React.Component)); exports.DetailsListGroupedExample = DetailsListGroupedExample; //# sourceMappingURL=DetailsList.Grouped.Example.js.map