UNPKG

ukelli-ui

Version:

ukelli-ui 是基于 React 的 UI 库,提供简约和功能齐全的组件,可高度定制的组件接口,灵活的配置,提供给开发者另一种开发思路,也致力于尝试不同的组件使用和开发方向。

289 lines (224 loc) 12.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _basicHelper = require("basic-helper"); var _dropdownWrapper = _interopRequireDefault(require("./dropdown-wrapper")); var _ = require(".."); var _ukeUtils = require("../uke-utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var LinkSelector = /*#__PURE__*/ function (_UkeComponent) { _inherits(LinkSelector, _UkeComponent); function LinkSelector(props) { var _this; _classCallCheck(this, LinkSelector); _this = _possibleConstructorReturn(this, _getPrototypeOf(LinkSelector).call(this, props)); _defineProperty(_assertThisInitialized(_this), "itemMapFilter", function (item) { var mappers = _this.props.mappers; var child = mappers.child, code = mappers.code, title = mappers.title, icon = mappers.icon; return _objectSpread({}, item, { child: item[child], code: item[code], title: item[title], icon: item[icon] }); }); _defineProperty(_assertThisInitialized(_this), "getMenuLinkerDOM", function (options) { var code = options.code, key = options.key, to = options.to, _onClick = options.onClick, menuText = options.menuText, icon = options.icon; var _assertThisInitialize = _assertThisInitialized(_this), gm = _assertThisInitialize.gm; return _react["default"].createElement("div", { key: key, className: "menu", onClick: function onClick(e) { return (0, _basicHelper.Call)(_onClick, key); } }, !icon ? _react["default"].createElement("span", { className: "menu-tip" }, "-") : _react["default"].createElement(_.Icon, { n: icon, classNames: ['mr10'] }), gm(menuText)); }); _defineProperty(_assertThisInitialized(_this), "selectItem", function (foldIdx, activeIdx) { _this.setState(function (_ref) { var selectedIndexMap = _ref.selectedIndexMap; var data = _this.props.data; var nextIndexMap = _toConsumableArray(selectedIndexMap); var nextActiveGroup = []; nextIndexMap.splice(foldIdx + 1); nextIndexMap[foldIdx] = activeIdx; var recursive = function recursive(currDataGroup, level) { var idx = nextIndexMap[level]; var currData = currDataGroup[idx]; if (!currData) return; var item = _this.itemMapFilter(currData); var child = item.child; nextActiveGroup.push(item); if (child && level < nextIndexMap.length) recursive(child, level + 1); }; recursive(data, 0); return { selectedIndexMap: nextIndexMap, selectedItems: nextActiveGroup }; }); }); _defineProperty(_assertThisInitialized(_this), "getAllSet", function (initDataList) { _this.extendsDOM = []; _this.activeItems = []; if (!initDataList || !Array.isArray(initDataList)) return; var selectedIndexMap = _this.state.selectedIndexMap; var recursive = function recursive(currSelectedIdx, currDataList) { var currDOMSets = []; var nextSelectedIdx = currSelectedIdx + 1; var activeItemIdx = selectedIndexMap[currSelectedIdx]; currDataList.forEach(function (item, currDataIdx) { if (!item) return; var isActive = activeItemIdx === currDataIdx; var _item = _this.itemMapFilter(item); var child = _item.child, title = _item.title, code = _item.code, icon = _item.icon; var hasChildren = child && child.length > 0; var dom = null; if (isActive) _this.activeItems.push(_item); if (hasChildren && isActive) { var childDOM = recursive.call(_assertThisInitialized(_this), nextSelectedIdx, currDataList[activeItemIdx].child); _this.extendsDOM.unshift(childDOM); } dom = _react["default"].createElement("div", { key: currDataIdx, className: "folder" + (isActive ? ' active' : '') }, _react["default"].createElement("div", { className: "fold-title", onClick: function onClick(e) { return _this.selectItem(currSelectedIdx, currDataIdx); } }, title, hasChildren && _react["default"].createElement(_.Icon, { n: "angle-right" }))); currDOMSets.push(dom); }); return currDOMSets; }; return recursive.call(_assertThisInitialized(_this), 0, initDataList); }); _defineProperty(_assertThisInitialized(_this), "getSelectedTitle", function () { var res = _this.gm('请选择'); var selectedItems = _this.state.selectedItems; console.log(selectedItems); if (selectedItems.length > 0) { res = _react["default"].createElement("div", null, selectedItems.map(function (item, idx) { var code = item.code, title = item.title; var isLastest = idx == selectedItems.length - 1; return _react["default"].createElement("span", { key: code + title }, title, !isLastest && ' > '); })); } return res; }); _defineProperty(_assertThisInitialized(_this), "saveDropWrapper", function (e) { _this.dropWrapper = e; }); _this.state = { /** 递归结构选中的索引 */ selectedIndexMap: [// 0, 1, 0 ], selectedItems: [] }; _this.extendsDOM = []; _this.activeItems = []; return _this; } // componentDidUpdate() { // this.dropWrapper && this.dropWrapper.updateNodeRef(); // } _createClass(LinkSelector, [{ key: "render", value: function render() { var _this2 = this; var _this$props = this.props, data = _this$props.data, propsForDropWrapper = _objectWithoutProperties(_this$props, ["data"]); var selectedTitle = this.getSelectedTitle(); return _react["default"].createElement(_dropdownWrapper["default"], _extends({ ref: this.saveDropWrapper }, propsForDropWrapper, { menuTitle: selectedTitle }), function (helper) { return _react["default"].createElement("div", { className: "uke-link-selector", style: { width: 400 } }, _react["default"].createElement("div", { className: "items" }, _react["default"].createElement("div", { className: "wrapper" }, _this2.getAllSet(data)), _toConsumableArray(_this2.extendsDOM).map(function (item, idx) { return _react["default"].createElement("div", { className: "wrapper", key: idx }, item); }))); }); } }]); return LinkSelector; }(_ukeUtils.UkeComponent); exports["default"] = LinkSelector; _defineProperty(LinkSelector, "propTypes", { /** data 的具体 key 的 mapper */ mappers: _propTypes["default"].shape({ child: _propTypes["default"].string.isRequired, code: _propTypes["default"].string.isRequired, title: _propTypes["default"].string.isRequired, icon: _propTypes["default"].string }), /** 总数据,可以通过 child 无限递归 */ data: _propTypes["default"].arrayOf(_propTypes["default"].shape({})).isRequired, onChange: _propTypes["default"].func }); _defineProperty(LinkSelector, "defaultProps", { mappers: { child: 'child', code: 'code', title: 'title', icon: 'icon' } });