UNPKG

@csegames/camelot-unchained

Version:

Camelot Unchained Client Library

104 lines (103 loc) 5.11 kB
"use strict"; /* * 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;