@txdfe/at
Version:
一个设计体系组件库
861 lines (859 loc) • 32.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _select = _interopRequireDefault(require("../select"));
var _cascader = _interopRequireDefault(require("../cascader"));
var _menu = _interopRequireDefault(require("../menu"));
var _util = require("../util");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
var bindCtx = _util.func.bindCtx;
var pickOthers = _util.obj.pickOthers;
var getStyle = _util.dom.getStyle;
/**
* CascaderSelect
*/
var CascaderSelect = exports["default"] = /*#__PURE__*/function (_Component) {
function CascaderSelect(props, context) {
var _this;
_classCallCheck(this, CascaderSelect);
_this = _callSuper(this, CascaderSelect, [props, context]);
_this.state = {
value: _this.normalizeValue('value' in props ? props.value : props.defaultValue),
searchValue: '',
visible: typeof props.visible === 'undefined' ? props.defaultVisible : props.visible
};
bindCtx(_this, ['handleVisibleChange', 'handleAfterOpen', 'handleChange', 'handleClear', 'handleRemove', 'handleSearch', 'getPopup', 'saveSelectRef', 'saveCascaderRef', 'handleKeyDown']);
return _this;
}
_inherits(CascaderSelect, _Component);
return _createClass(CascaderSelect, [{
key: "UNSAFE_componentWillReceiveProps",
value: function UNSAFE_componentWillReceiveProps(nextProps) {
var st = {};
if ('value' in nextProps) {
st.value = this.normalizeValue(nextProps.value);
}
if ('visible' in nextProps) {
st.visible = nextProps.visible;
}
if (Object.keys(st).length) {
this.setState(st);
}
}
}, {
key: "normalizeValue",
value: function normalizeValue(value) {
if (value) {
if (Array.isArray(value)) {
return value;
}
return [value];
}
return [];
}
}, {
key: "updateCache",
value: function updateCache(dataSource) {
var _this2 = this;
this._v2n = {};
this._p2n = {};
var _loop = function loop(data) {
var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '0';
return data.forEach(function (item, index) {
var value = item.value,
children = item.children;
var pos = "".concat(prefix, "-").concat(index);
_this2._v2n[value] = _this2._p2n[pos] = _objectSpread(_objectSpread({}, item), {}, {
pos: pos
});
if (children && children.length) {
_loop(children, pos);
}
});
};
_loop(dataSource);
}
}, {
key: "flatValue",
value: function flatValue(value) {
var _this3 = this;
var getDepth = function getDepth(v) {
var pos = _this3.getPos(v);
if (!pos) {
return 0;
}
return pos.split('-').length;
};
var newValue = value.slice(0).sort(function (prev, next) {
return getDepth(prev) - getDepth(next);
});
for (var i = 0; i < newValue.length; i++) {
for (var j = 0; j < newValue.length; j++) {
if (i !== j && this.isDescendantOrSelf(this.getPos(newValue[i]), this.getPos(newValue[j]))) {
newValue.splice(j, 1);
j--;
}
}
}
return newValue;
}
}, {
key: "isDescendantOrSelf",
value: function isDescendantOrSelf(currentPos, targetPos) {
if (!currentPos || !targetPos) {
return false;
}
var currentNums = currentPos.split('-');
var targetNums = targetPos.split('-');
return currentNums.length <= targetNums.length && currentNums.every(function (num, index) {
return num === targetNums[index];
});
}
}, {
key: "getValue",
value: function getValue(pos) {
return this._p2n[pos] ? this._p2n[pos].value : null;
}
}, {
key: "getPos",
value: function getPos(value) {
return this._v2n[value] ? this._v2n[value].pos : null;
}
}, {
key: "getData",
value: function getData(value) {
var _this4 = this;
return value.map(function (v) {
return _this4._v2n[v];
});
}
}, {
key: "getLabelPath",
value: function getLabelPath(data) {
var _this5 = this;
var nums = data.pos.split('-');
return nums.slice(1).reduce(function (ret, num, index) {
var p = nums.slice(0, index + 2).join('-');
ret.push(_this5._p2n[p].label);
return ret;
}, []);
}
}, {
key: "getSignleData",
value: function getSignleData(value) {
if (!value.length) {
return null;
}
if (Array.isArray(value)) value = value[0];
var data = this._v2n[value];
if (!data) {
return {
value: value
};
}
var labelPath = this.getLabelPath(data);
var displayRender = this.props.displayRender || function (labels) {
return labels.join(' / ');
};
return _objectSpread(_objectSpread({}, data), {}, {
label: displayRender(labelPath, data)
});
}
}, {
key: "getMultipleData",
value: function getMultipleData(value) {
var _this6 = this;
if (!value.length) {
return null;
}
var _this$props = this.props,
checkStrictly = _this$props.checkStrictly,
canOnlyCheckLeaf = _this$props.canOnlyCheckLeaf,
displayRender = _this$props.displayRender;
var data = (checkStrictly || canOnlyCheckLeaf ? value : this.flatValue(value)).map(function (v) {
return _this6._v2n[v] || {
value: v
};
});
if (displayRender) {
data = data.map(function (item) {
if (!item.pos) {
return item;
}
var labelPath = _this6.getLabelPath(item);
return _objectSpread(_objectSpread({}, item), {}, {
label: displayRender(labelPath, item)
});
});
}
return data;
}
}, {
key: "getIndeterminate",
value: function getIndeterminate(value) {
var _this7 = this;
var indeterminate = [];
var positions = value.map(this.getPos.bind(this));
positions.forEach(function (pos) {
if (!pos) {
return false;
}
var nums = pos.split('-');
for (var i = nums.length; i > 2; i--) {
var parentPos = nums.slice(0, i - 1).join('-');
var parentValue = _this7.getValue(parentPos);
if (indeterminate.indexOf(parentValue) === -1) {
indeterminate.push(parentValue);
}
}
});
return indeterminate;
}
}, {
key: "saveSelectRef",
value: function saveSelectRef(ref) {
this.select = ref;
}
}, {
key: "saveCascaderRef",
value: function saveCascaderRef(ref) {
this.cascader = ref;
}
}, {
key: "completeValue",
value: function completeValue(value) {
var newValue = [];
var flatValue = this.flatValue(value).reverse();
var ps = Object.keys(this._p2n);
for (var i = 0; i < ps.length; i++) {
for (var j = 0; j < flatValue.length; j++) {
var v = flatValue[j];
if (this.isDescendantOrSelf(this.getPos(v), ps[i])) {
newValue.push(this.getValue(ps[i]));
ps.splice(i, 1);
i--;
break;
}
}
}
return newValue;
}
}, {
key: "isLeaf",
value: function isLeaf(data) {
return !(data.children && data.children.length || !!this.props.loadData && !data.isLeaf);
}
}, {
key: "handleVisibleChange",
value: function handleVisibleChange(visible, type) {
if (!('visible' in this.props)) {
this.setState({
visible: visible
});
}
if (['fromCascader', 'keyboard'].indexOf(type) !== -1 && !visible) {
this.select.focusInput();
}
this.props.onVisibleChange(visible, type);
}
}, {
key: "handleKeyDown",
value: function handleKeyDown(e) {
var onKeyDown = this.props.onKeyDown;
var visible = this.state.visible;
if (onKeyDown) {
onKeyDown(e);
}
if (!visible) {
return;
}
switch (e.keyCode) {
case _util.KEYCODE.UP:
case _util.KEYCODE.DOWN:
this.cascader.setFocusValue();
e.preventDefault();
break;
default:
break;
}
}
}, {
key: "getPopup",
value: function getPopup(ref) {
this.popup = ref;
if (typeof this.props.popupProps.ref === 'function') {
this.props.popupProps.ref(ref);
}
}
}, {
key: "handleAfterOpen",
value: function handleAfterOpen() {
if (!this.popup) {
return;
}
var _this$props2 = this.props,
prefix = _this$props2.prefix,
popupProps = _this$props2.popupProps;
var dropDownNode = this.popup.getInstance().overlay.getInstance().getContentNode();
var cascaderNode = dropDownNode.querySelector(".".concat(prefix, "cascader"));
if (cascaderNode) {
this.cascaderHeight = getStyle(cascaderNode, 'height');
}
if (typeof popupProps.afterOpen === 'function') {
popupProps.afterOpen();
}
}
}, {
key: "handleChange",
value: function handleChange(value, data, extra) {
var _this$props3 = this.props,
multiple = _this$props3.multiple,
changeOnSelect = _this$props3.changeOnSelect,
onChange = _this$props3.onChange;
var _this$state = this.state,
visible = _this$state.visible,
searchValue = _this$state.searchValue;
var st = {};
if (!multiple && (!changeOnSelect || this.isLeaf(data) || !!searchValue)) {
this.handleVisibleChange(!visible, 'fromCascader');
}
if (!('value' in this.props)) {
st.value = value;
}
if (!multiple && searchValue) {
st.searchValue = '';
}
if (Object.keys(st).length) {
this.setState(st);
}
if (onChange) {
onChange(value, data, extra);
}
if (searchValue && this.select) {
this.select.handleSearchClear();
}
}
}, {
key: "handleClear",
value: function handleClear() {
// 单选时点击清空按钮
var _this$props4 = this.props,
hasClear = _this$props4.hasClear,
multiple = _this$props4.multiple,
treeCheckable = _this$props4.treeCheckable;
if (hasClear && (!multiple || !treeCheckable)) {
if (!('value' in this.props)) {
this.setState({
value: []
});
}
this.props.onChange(null, null);
}
}
}, {
key: "handleRemove",
value: function handleRemove(currentData) {
var currentValue = currentData.value;
var value;
var _this$props5 = this.props,
multiple = _this$props5.multiple,
checkStrictly = _this$props5.checkStrictly,
onChange = _this$props5.onChange;
if (multiple) {
value = _toConsumableArray(this.state.value);
value.splice(value.indexOf(currentValue), 1);
if (this.props.onChange) {
var data = this.getData(value);
var checked = false;
if (checkStrictly) {
this.props.onChange(value, data, {
checked: checked,
currentData: currentData,
checkedData: data
});
} else {
var checkedValue = this.completeValue(value);
var checkedData = this.getData(checkedValue);
var indeterminateValue = this.getIndeterminate(value);
var indeterminateData = this.getData(indeterminateValue);
this.props.onChange(value, data, {
checked: checked,
currentData: currentData,
checkedData: checkedData,
indeterminateData: indeterminateData
});
}
}
} else {
value = [];
onChange(null, null);
}
if (!('value' in this.props)) {
this.setState({
value: value
});
}
}
}, {
key: "handleSearch",
value: function handleSearch(searchValue) {
this.setState({
searchValue: searchValue
});
}
}, {
key: "getPath",
value: function getPath(pos) {
var items = [];
var nums = pos.split('-');
if (nums === 2) {
items.push(this._p2n[pos]);
} else {
for (var i = 1; i < nums.length; i++) {
var p = nums.slice(0, i + 1).join('-');
items.push(this._p2n[p]);
}
}
return items;
}
}, {
key: "filterItems",
value: function filterItems() {
var _this8 = this;
var _this$props6 = this.props,
multiple = _this$props6.multiple,
changeOnSelect = _this$props6.changeOnSelect,
canOnlyCheckLeaf = _this$props6.canOnlyCheckLeaf,
filter = _this$props6.filter;
var searchValue = this.state.searchValue;
var items = Object.keys(this._p2n).map(function (p) {
return _this8._p2n[p];
});
if (!multiple && !changeOnSelect || multiple && canOnlyCheckLeaf) {
items = items.filter(function (item) {
return !item.children || !item.children.length;
});
}
return items.map(function (item) {
return _this8.getPath(item.pos);
}).filter(function (path) {
return filter(searchValue, path);
});
}
}, {
key: "renderNotFound",
value: function renderNotFound() {
var _this$props7 = this.props,
prefix = _this$props7.prefix,
notFoundContent = _this$props7.notFoundContent;
return /*#__PURE__*/_react["default"].createElement(_menu["default"], {
className: "".concat(prefix, "cascader-select-not-found")
}, /*#__PURE__*/_react["default"].createElement(_menu["default"].Item, null, notFoundContent));
}
}, {
key: "renderCascader",
value: function renderCascader() {
var dataSource = this.props.dataSource;
if (dataSource.length === 0) {
return this.renderNotFound();
}
var searchValue = this.state.searchValue;
var filteredPaths = [];
if (searchValue) {
filteredPaths = this.filterItems();
if (filteredPaths.length === 0) {
return this.renderNotFound();
}
}
var _this$props8 = this.props,
multiple = _this$props8.multiple,
useVirtual = _this$props8.useVirtual,
changeOnSelect = _this$props8.changeOnSelect,
checkStrictly = _this$props8.checkStrictly,
canOnlyCheckLeaf = _this$props8.canOnlyCheckLeaf,
defaultExpandedValue = _this$props8.defaultExpandedValue,
expandTriggerType = _this$props8.expandTriggerType,
onExpand = _this$props8.onExpand,
listStyle = _this$props8.listStyle,
listClassName = _this$props8.listClassName,
loadData = _this$props8.loadData,
showSearch = _this$props8.showSearch,
resultRender = _this$props8.resultRender,
readOnly = _this$props8.readOnly,
itemRender = _this$props8.itemRender;
var value = this.state.value;
var props = {
dataSource: dataSource,
value: value,
multiple: multiple,
useVirtual: useVirtual,
canOnlySelectLeaf: !changeOnSelect,
checkStrictly: checkStrictly,
canOnlyCheckLeaf: canOnlyCheckLeaf,
defaultExpandedValue: defaultExpandedValue,
expandTriggerType: expandTriggerType,
ref: this.saveCascaderRef,
onExpand: onExpand,
listStyle: listStyle,
listClassName: listClassName,
loadData: loadData,
itemRender: itemRender
};
if (!readOnly) {
props.onChange = this.handleChange;
}
if (showSearch) {
props.searchValue = searchValue;
props.filteredPaths = filteredPaths;
props.resultRender = resultRender;
props.filteredListStyle = {
height: this.cascaderHeight
};
}
return /*#__PURE__*/_react["default"].createElement(_cascader["default"], props);
}
}, {
key: "renderPopupContent",
value: function renderPopupContent() {
var _this$props9 = this.props,
prefix = _this$props9.prefix,
header = _this$props9.header,
footer = _this$props9.footer;
return /*#__PURE__*/_react["default"].createElement("div", {
className: "".concat(prefix, "cascader-select-dropdown")
}, header, this.renderCascader(), footer);
}
}, {
key: "render",
value: function render() {
var _this$props10 = this.props,
prefix = _this$props10.prefix,
size = _this$props10.size,
hasArrow = _this$props10.hasArrow,
hasBorder = _this$props10.hasBorder,
hasClear = _this$props10.hasClear,
label = _this$props10.label,
readOnly = _this$props10.readOnly,
placeholder = _this$props10.placeholder,
dataSource = _this$props10.dataSource,
disabled = _this$props10.disabled,
multiple = _this$props10.multiple,
className = _this$props10.className,
showSearch = _this$props10.showSearch,
popupStyle = _this$props10.popupStyle,
popupClassName = _this$props10.popupClassName,
popupContainer = _this$props10.popupContainer,
popupProps = _this$props10.popupProps,
followTrigger = _this$props10.followTrigger;
var _this$state2 = this.state,
value = _this$state2.value,
searchValue = _this$state2.searchValue,
visible = _this$state2.visible;
var others = pickOthers(Object.keys(CascaderSelect.propTypes), this.props);
var popupContent = this.renderPopupContent();
this.updateCache(dataSource);
var props = {
prefix: prefix,
className: className,
size: size,
placeholder: placeholder,
disabled: disabled,
hasArrow: hasArrow,
hasBorder: hasBorder,
hasClear: hasClear,
label: label,
readOnly: readOnly,
ref: this.saveSelectRef,
autoWidth: false,
mode: multiple ? 'multiple' : 'single',
value: multiple ? this.getMultipleData(value) : this.getSignleData(value),
onChange: this.handleClear,
onRemove: this.handleRemove,
visible: visible,
onVisibleChange: this.handleVisibleChange,
showSearch: showSearch,
// searchValue,
onSearch: this.handleSearch,
onKeyDown: this.handleKeyDown,
popupContent: popupContent,
popupStyle: popupStyle,
popupClassName: popupClassName,
popupContainer: popupContainer,
popupProps: popupProps,
followTrigger: followTrigger
};
if (showSearch) {
props.popupProps = _objectSpread(_objectSpread({}, popupProps), {}, {
ref: this.getPopup,
afterOpen: this.handleAfterOpen
});
props.autoWidth = showSearch && !!searchValue;
}
return /*#__PURE__*/_react["default"].createElement(_select["default"], _extends({}, props, others));
}
}]);
}(_react.Component);
_defineProperty(CascaderSelect, "propTypes", {
prefix: _propTypes["default"].string,
pure: _propTypes["default"].bool,
className: _propTypes["default"].string,
/**
* 选择框大小
*/
size: _propTypes["default"].oneOf(['small', 'medium', 'large']),
/**
* 选择框占位符
*/
placeholder: _propTypes["default"].string,
/**
* 是否禁用
*/
disabled: _propTypes["default"].bool,
/**
* 是否有下拉箭头
*/
hasArrow: _propTypes["default"].bool,
/**
* 是否有边框
*/
hasBorder: _propTypes["default"].bool,
/**
* 是否有清除按钮
*/
hasClear: _propTypes["default"].bool,
/**
* 自定义内联 label
*/
label: _propTypes["default"].node,
/**
* 是否只读,只读模式下可以展开弹层但不能选
*/
readOnly: _propTypes["default"].bool,
/**
* 数据源,结构可参考下方说明
*/
dataSource: _propTypes["default"].arrayOf(_propTypes["default"].object),
/**
* (非受控)默认值
*/
defaultValue: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].arrayOf(_propTypes["default"].string)]),
/**
* (受控)当前值
*/
value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].arrayOf(_propTypes["default"].string)]),
/**
* 选中值改变时触发的回调函数
* @param {String|Array} value 选中的值,单选时返回单个值,多选时返回数组
* @param {Object|Array} data 选中的数据,包括 value 和 label,单选时返回单个值,多选时返回数组,父子节点选中关联时,同时选中,只返回父节点
* @param {Object} extra 额外参数
* @param {Array} extra.selectedPath 单选时选中的数据的路径
* @param {Boolean} extra.checked 多选时当前的操作是选中还是取消选中
* @param {Object} extra.currentData 多选时当前操作的数据
* @param {Array} extra.checkedData 多选时所有被选中的数据
* @param {Array} extra.indeterminateData 多选时半选的数据
*/
onChange: _propTypes["default"].func,
/**
* 默认展开值,如果不设置,组件内部会根据 defaultValue/value 进行自动设置
*/
defaultExpandedValue: _propTypes["default"].arrayOf(_propTypes["default"].string),
/**
* 展开触发的方式
*/
expandTriggerType: _propTypes["default"].oneOf(['click', 'hover']),
onExpand: _propTypes["default"].func,
/**
* 是否开启虚拟滚动
*/
useVirtual: _propTypes["default"].bool,
/**
* 是否多选
*/
multiple: _propTypes["default"].bool,
/**
* 是否选中即发生改变, 该属性仅在单选模式下有效
*/
changeOnSelect: _propTypes["default"].bool,
/**
* 是否只能勾选叶子项的checkbox,该属性仅在多选模式下有效
*/
canOnlyCheckLeaf: _propTypes["default"].bool,
/**
* 父子节点是否选中不关联
*/
checkStrictly: _propTypes["default"].bool,
/**
* 每列列表样式对象
*/
listStyle: _propTypes["default"].object,
/**
* 每列列表类名
*/
listClassName: _propTypes["default"].string,
/**
* 选择框单选时展示结果的自定义渲染函数
* @param {Array} label 选中路径的文本数组
* @return {ReactNode} 渲染在选择框中的内容
* @default 单选时:labelPath => labelPath.join(' / ');多选时:labelPath => labelPath[labelPath.length - 1]
*/
displayRender: _propTypes["default"].func,
/**
* 渲染 item 内容的方法
* @param {Object} item 渲染节点的item
* @return {ReactNode} item node
*/
itemRender: _propTypes["default"].func,
/**
* 是否显示搜索框
*/
showSearch: _propTypes["default"].bool,
/**
* 自定义搜索函数
* @param {String} searchValue 搜索的关键字
* @param {Array} path 节点路径
* @return {Boolean} 是否匹配
* @default 根据路径所有节点的文本值模糊匹配
*/
filter: _propTypes["default"].func,
/**
* 搜索结果自定义渲染函数
* @param {String} searchValue 搜索的关键字
* @param {Array} path 匹配到的节点路径
* @return {ReactNode} 渲染的内容
* @default 按照节点文本 a / b / c 的模式渲染
*/
resultRender: _propTypes["default"].func,
/**
* 搜索结果列表是否和选择框等宽
*/
resultAutoWidth: _propTypes["default"].bool,
/**
* 无数据时显示内容
*/
notFoundContent: _propTypes["default"].node,
/**
* 异步加载数据函数
* @param {Object} data 当前点击异步加载的数据
*/
loadData: _propTypes["default"].func,
/**
* 自定义下拉框头部
*/
header: _propTypes["default"].node,
/**
* 自定义下拉框底部
*/
footer: _propTypes["default"].node,
/**
* 初始下拉框是否显示
*/
defaultVisible: _propTypes["default"].bool,
/**
* 当前下拉框是否显示
*/
visible: _propTypes["default"].bool,
/**
* 下拉框显示或关闭时触发事件的回调函数
* @param {Boolean} visible 是否显示
* @param {String} type 触发显示关闭的操作类型, fromTrigger 表示由trigger的点击触发; docClick 表示由document的点击触发
*/
onVisibleChange: _propTypes["default"].func,
/**
* 下拉框自定义样式对象
*/
popupStyle: _propTypes["default"].object,
/**
* 下拉框样式自定义类名
*/
popupClassName: _propTypes["default"].string,
/**
* 下拉框挂载的容器节点
*/
popupContainer: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].func]),
/**
* 透传到 Popup 的属性对象
*/
popupProps: _propTypes["default"].object,
/**
* 是否跟随滚动
*/
followTrigger: _propTypes["default"].bool
});
_defineProperty(CascaderSelect, "defaultProps", {
prefix: 'next-',
pure: false,
size: 'medium',
disabled: false,
hasArrow: true,
hasBorder: true,
hasClear: false,
dataSource: [],
defaultValue: null,
expandTriggerType: 'click',
onExpand: function onExpand() {},
useVirtual: false,
multiple: false,
changeOnSelect: false,
canOnlyCheckLeaf: false,
checkStrictly: false,
showSearch: false,
filter: function filter(searchValue, path) {
return path.some(function (item) {
return item.label.indexOf(searchValue) > -1;
});
},
resultRender: function resultRender(searchValue, path) {
var parts = [];
path.forEach(function (item, i) {
var others = item.label.split(searchValue);
others.forEach(function (other, j) {
if (other) {
parts.push(other);
}
if (j < others.length - 1) {
parts.push(/*#__PURE__*/_react["default"].createElement("em", {
key: "".concat(i, "-").concat(j)
}, searchValue));
}
});
if (i < path.length - 1) {
parts.push(' / ');
}
});
return /*#__PURE__*/_react["default"].createElement("span", null, parts);
},
resultAutoWidth: true,
notFoundContent: 'Not Found',
defaultVisible: false,
onVisibleChange: function onVisibleChange() {},
popupProps: {}
});