UNPKG

choerodon-ui

Version:

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

214 lines (181 loc) 6.63 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; 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 _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper")); var _tslib = require("tslib"); var _react = _interopRequireWildcard(require("react")); 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")); var IconCategory = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(IconCategory, _Component); var _super = (0, _createSuper2["default"])(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 /*#__PURE__*/_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"])(), true) } }); } } }, { 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 /*#__PURE__*/_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 /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-category") }, this.renderPagination(), /*#__PURE__*/_react["default"].createElement("ul", { key: "icon-items", ref: this.saveRef }, this.renderIcons())); } }]); return IconCategory; }(_react.Component); IconCategory.displayName = 'IconCategory'; 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