office-ui-fabric-react
Version:
Reusable React components for building experiences for Office 365.
101 lines • 5.12 kB
JavaScript
import * as tslib_1 from "tslib";
import * as React from 'react';
import { css } from 'office-ui-fabric-react/lib/Utilities';
import { FocusZone, FocusZoneDirection } from 'office-ui-fabric-react/lib/FocusZone';
import { DefaultButton } from 'office-ui-fabric-react/lib/Button';
import { Dropdown } from 'office-ui-fabric-react/lib/Dropdown';
import { List } from 'office-ui-fabric-react/lib/List';
import { TextField } from 'office-ui-fabric-react/lib/TextField';
import './List.Scrolling.Example.scss';
var evenItemHeight = 25;
var oddItemHeight = 50;
var numberOfItemsOnPage = 10;
var ListScrollingExample = /** @class */ (function (_super) {
tslib_1.__extends(ListScrollingExample, _super);
function ListScrollingExample(props) {
var _this = _super.call(this, props) || this;
_this._resolveList = function (list) {
_this._list = list;
};
_this.state = {
selectedIndex: 0,
scrollToMode: 0 /* auto */
};
return _this;
}
ListScrollingExample.prototype.render = function () {
var items = this.props.items;
return (React.createElement(FocusZone, { direction: FocusZoneDirection.vertical },
React.createElement("div", null,
React.createElement(DefaultButton, { onClick: this._scrollRelative(-10) }, "-10"),
React.createElement(DefaultButton, { onClick: this._scrollRelative(-1) }, "-1"),
React.createElement(DefaultButton, { onClick: this._scrollRelative(1) }, "+1"),
React.createElement(DefaultButton, { onClick: this._scrollRelative(10) }, "+10")),
React.createElement(Dropdown, { placeHolder: 'Select an Option', label: 'Scroll To Mode:', id: 'Scrolldrop1', ariaLabel: 'Scroll To Mode', defaultSelectedKey: 'auto', options: [
{ key: 'auto', text: 'Auto' },
{ key: 'top', text: 'Top' },
{ key: 'bottom', text: 'Bottom' },
{ key: 'center', text: 'Center' },
], onChanged: this._onDropdownChanged }),
React.createElement("div", null,
"Scroll item index:",
React.createElement(TextField, { value: this.state.selectedIndex.toString(10), onChanged: this._onChangeText })),
React.createElement("div", { className: 'ms-ListScrollingExample-container', "data-is-scrollable": true },
React.createElement(List, { ref: this._resolveList, items: items, getPageHeight: this._getPageHeight, onRenderCell: this._onRenderCell }))));
};
ListScrollingExample.prototype._getPageHeight = function (idx) {
var h = 0;
for (var i = idx; i < idx + numberOfItemsOnPage; ++i) {
var isEvenRow = i % 2 === 0;
h += isEvenRow ? evenItemHeight : oddItemHeight;
}
return h;
};
ListScrollingExample.prototype._onChangeText = function (value) {
this._scroll(parseInt(value, 10) || 0, this.state.scrollToMode);
};
ListScrollingExample.prototype._onDropdownChanged = function (option) {
var scrollMode = this.state.scrollToMode;
switch (option.key) {
case 'auto':
scrollMode = 0 /* auto */;
break;
case 'top':
scrollMode = 1 /* top */;
break;
case 'bottom':
scrollMode = 2 /* bottom */;
break;
case 'center':
scrollMode = 3 /* center */;
break;
}
this._scroll(this.state.selectedIndex, scrollMode);
};
ListScrollingExample.prototype._onRenderCell = function (item, index) {
return (React.createElement("div", { className: 'ms-ListScrollingExample-itemCell', "data-is-focusable": true },
React.createElement("div", { className: css('ms-ListScrollingExample-itemContent', (index % 2 === 0) && 'ms-ListScrollingExample-itemContent-even', (index % 2 === 1) && 'ms-ListScrollingExample-itemContent-odd') },
index,
" \u00A0 ",
item.name)));
};
ListScrollingExample.prototype._scrollRelative = function (delta) {
var _this = this;
return function () {
_this._scroll(_this.state.selectedIndex + delta, _this.state.scrollToMode);
};
};
ListScrollingExample.prototype._scroll = function (index, scrollToMode) {
var _this = this;
var updatedSelectedIndex = Math.min(Math.max(index, 0), this.props.items.length - 1);
this.setState({
selectedIndex: updatedSelectedIndex,
scrollToMode: scrollToMode
}, function () {
_this._list.scrollToIndex(updatedSelectedIndex, function (idx) { return idx % 2 === 0 ? evenItemHeight : oddItemHeight; }, scrollToMode);
});
};
return ListScrollingExample;
}(React.Component));
export { ListScrollingExample };
//# sourceMappingURL=List.Scrolling.Example.js.map