@csegames/camelot-unchained
Version:
Camelot Unchained Client Library
104 lines (103 loc) • 5.11 kB
JavaScript
;
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
var __extends = undefined && undefined.__extends || function () {
var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {
d.__proto__ = b;
} || function (d, b) {
for (var p in b) {
if (b.hasOwnProperty(p)) d[p] = b[p];
}
};
return function (d, b) {
extendStatics(d, b);
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
}();
var __assign = undefined && undefined.__assign || Object.assign || function (t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) {
if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var aphrodite_1 = require("aphrodite");
exports.defaultPageControllerStyle = {
PageController: {},
controllerContainer: {},
contentContainer: {},
controllerButton: {
display: 'inline-block',
cursor: 'pointer',
':active': {
textShadow: '1px 1px rgba(0,0,0,0.7)'
}
},
disabledControllerButton: {},
pageNumberText: {
margin: 0
}
};
var PageController = function (_super) {
__extends(PageController, _super);
function PageController(props) {
var _this = _super.call(this, props) || this;
_this.renderPageController = function (ss, custom) {
var moreNext = _this.state.activePageIndex < _this.props.pages.length - 1;
var morePrev = _this.state.activePageIndex > 0;
return React.createElement("div", { className: aphrodite_1.css(ss.controllerContainer, custom.controllerContainer) }, React.createElement("div", { className: aphrodite_1.css(ss.controllerButton, custom.controllerButton, !morePrev && ss.disabledControllerButton, !morePrev && custom.disabledControllerButton), onClick: _this.onPrevPage }, _this.props.prevButtonText || '<Prev'), React.createElement("p", { className: aphrodite_1.css(ss.pageNumberText, custom.pageNumberText) }, _this.state.activePageIndex + 1, " / ", _this.props.pages.length), React.createElement("div", { className: aphrodite_1.css(ss.controllerButton, custom.controllerButton, !moreNext && ss.disabledControllerButton, !moreNext && custom.disabledControllerButton), onClick: _this.onNextPage }, _this.props.nextButtonText || 'Next>'));
};
_this.onNextPage = function () {
if (_this.state.activePageIndex < _this.props.pages.length - 1) {
var nextPageIndex = _this.state.activePageIndex + 1;
_this.setState({ activePageIndex: nextPageIndex });
if (typeof _this.props.onNextPageClick === 'function') {
_this.props.onNextPageClick(nextPageIndex);
_this.props.onPageChange(nextPageIndex);
}
}
};
_this.onPrevPage = function () {
if (_this.state.activePageIndex > 0) {
var prevPageIndex = _this.state.activePageIndex - 1;
_this.setState({ activePageIndex: _this.state.activePageIndex - 1 });
if (typeof _this.props.onPrevPageClick === 'function') {
_this.props.onPrevPageClick(prevPageIndex);
_this.props.onPageChange(prevPageIndex);
}
}
};
_this.state = {
activePageIndex: 0
};
return _this;
}
PageController.prototype.render = function () {
var ss = aphrodite_1.StyleSheet.create(exports.defaultPageControllerStyle);
var custom = aphrodite_1.StyleSheet.create(this.props.styles || {});
var activeContent = this.props.pages[this.state.activePageIndex];
var _a = this.props,
renderHeaderContainer = _a.renderHeaderContainer,
renderPageController = _a.renderPageController;
return React.createElement("div", { className: aphrodite_1.css(ss.PageController, custom.PageController) }, renderHeaderContainer && renderHeaderContainer(this.state, this.props), renderPageController ? renderPageController(this.state, this.props, this.onNextPage, this.onPrevPage) : this.renderPageController(ss, custom), activeContent && React.createElement(activeContent.render, __assign({}, activeContent.props)));
};
PageController.prototype.componentWillReceiveProps = function (nextProps) {
if (nextProps.pages.length < this.state.activePageIndex) {
this.setState({ activePageIndex: 0 });
this.props.onPageChange(0);
}
};
return PageController;
}(React.Component);
exports.PageController = PageController;
exports.default = PageController;