UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

260 lines (220 loc) 8.02 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _tslib = require("tslib"); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _mobxReact = require("mobx-react"); var _mobx = require("mobx"); var _UnitConvertor = require("../../../lib/_util/UnitConvertor"); var _measureScrollbar = _interopRequireDefault(require("../../../lib/_util/measureScrollbar")); var _IconItem = _interopRequireDefault(require("./IconItem")); var _Pagination = _interopRequireDefault(require("../pagination/Pagination")); var _autobind = _interopRequireDefault(require("../_util/autobind")); function _createSuper(Derived) { function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } var IconCategory = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(IconCategory, _Component); var _super = _createSuper(IconCategory); function IconCategory(props) { var _this; (0, _classCallCheck2["default"])(this, IconCategory); _this = _super.call(this, props); _this.setPage(props.page); return _this; } (0, _createClass2["default"])(IconCategory, [{ key: "saveRef", value: function saveRef(node) { this.ul = node; } }, { key: "handlePageChange", value: function handlePageChange(page) { this.setPage(page); var _this$props = this.props, onPageChange = _this$props.onPageChange, category = _this$props.category; if (onPageChange) { onPageChange(page, category); } } }, { key: "handleItemSelect", value: function handleItemSelect(icon) { var onSelect = this.props.onSelect; onSelect(icon); } }, { key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { if (nextProps.page && nextProps.page !== this.page) { this.setPage(nextProps.page); } } }, { key: "componentDidMount", value: function componentDidMount() { this.syncItemPosition(); } }, { key: "componentDidUpdate", value: function componentDidUpdate() { this.syncItemPosition(); } }, { key: "syncItemPosition", value: function syncItemPosition() { var _this$props2 = this.props, value = _this$props2.value, prefixCls = _this$props2.prefixCls, ul = this.ul; if (value && ul) { var item = ul.querySelector("li.".concat(prefixCls, "-item-selected")); if (item) { var offsetHeight = ul.offsetHeight, scrollTop = ul.scrollTop; var offsetTop = item.offsetTop, height = item.offsetHeight; if (offsetTop < scrollTop) { ul.scrollTo(0, offsetTop); } else if (offsetTop + height > scrollTop + offsetHeight) { ul.scrollTo(0, offsetTop + height - offsetHeight); } } } } }, { key: "setPage", value: function setPage() { var page = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; this.page = page; } }, { key: "renderPagination", value: function renderPagination() { var page = this.page, _this$props3 = this.props, paging = _this$props3.paging, pageSize = _this$props3.pageSize, prefixCls = _this$props3.prefixCls, icons = _this$props3.icons; var total = icons.length; if (paging && total > pageSize) { return _react["default"].createElement(_Pagination["default"], { key: "page", className: "".concat(prefixCls, "-pagination"), total: total, page: page, pageSize: pageSize, showSizeChanger: false, onChange: this.handlePageChange, style: { right: (0, _UnitConvertor.pxToRem)((0, _measureScrollbar["default"])()) } }); } } }, { key: "renderIcons", value: function renderIcons() { var _this2 = this; var _this$props4 = this.props, value = _this$props4.value, prefixCls = _this$props4.prefixCls, customFontName = _this$props4.customFontName; return this.getIcons().map(function (icon) { return _react["default"].createElement(_IconItem["default"], { key: icon, customFontName: customFontName, prefixCls: prefixCls, type: icon, onSelect: _this2.handleItemSelect, active: value === icon }); }); } }, { key: "getIcons", value: function getIcons() { var page = this.page, _this$props5 = this.props, paging = _this$props5.paging, pageSize = _this$props5.pageSize, icons = _this$props5.icons; if (paging && icons.length > pageSize) { return icons.slice((page - 1) * pageSize, page * pageSize); } return icons; } }, { key: "render", value: function render() { var prefixCls = this.props.prefixCls; return _react["default"].createElement("div", { className: "".concat(prefixCls, "-category") }, this.renderPagination(), _react["default"].createElement("ul", { key: "icon-items", ref: this.saveRef }, this.renderIcons())); } }]); return IconCategory; }(_react.Component); IconCategory.displayName = 'IconCategory'; IconCategory.propTypes = { prefixCls: _propTypes["default"].string, icons: _mobxReact.PropTypes.arrayOrObservableArrayOf(_propTypes["default"].string).isRequired, value: _propTypes["default"].string, onSelect: _propTypes["default"].func.isRequired, onPageChange: _propTypes["default"].func, pageSize: _propTypes["default"].number, page: _propTypes["default"].number, paging: _propTypes["default"].bool, customFontName: _propTypes["default"].string }; IconCategory.defaultProps = { paging: true }; (0, _tslib.__decorate)([_mobx.observable], IconCategory.prototype, "page", void 0); (0, _tslib.__decorate)([_autobind["default"]], IconCategory.prototype, "saveRef", null); (0, _tslib.__decorate)([_autobind["default"]], IconCategory.prototype, "handlePageChange", null); (0, _tslib.__decorate)([_autobind["default"]], IconCategory.prototype, "handleItemSelect", null); (0, _tslib.__decorate)([_mobx.action], IconCategory.prototype, "setPage", null); IconCategory = (0, _tslib.__decorate)([_mobxReact.observer], IconCategory); var _default = IconCategory; exports["default"] = _default; //# sourceMappingURL=IconCategory.js.map