linkmore-design
Version:
π πlmη»δ»ΆεΊγπ
171 lines (165 loc) β’ 6.84 kB
JavaScript
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "TreeNode", {
enumerable: true,
get: function () {
return _rcTreeSelect.TreeNode;
}
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classnames = _interopRequireDefault(require("classnames"));
var _rcTreeSelect = _interopRequireWildcard(require("rc-tree-select"));
var _omit = _interopRequireDefault(require("rc-util/lib/omit"));
var React = _interopRequireWildcard(require("react"));
var _configProvider = require("../config-provider");
var _defaultRenderEmpty = _interopRequireDefault(require("../config-provider/defaultRenderEmpty"));
var _DisabledContext = _interopRequireDefault(require("../config-provider/DisabledContext"));
var _SizeContext = _interopRequireDefault(require("../config-provider/SizeContext"));
var _context = require("../form/context");
var _iconUtil = _interopRequireDefault(require("../select/utils/iconUtil"));
var _iconUtil2 = _interopRequireDefault(require("../tree/utils/iconUtil"));
var _motion = require("../_util/motion");
var _statusUtils = require("../_util/statusUtils");
var _Compact = require("../space/Compact");
var _warning = _interopRequireDefault(require("../_util/warning"));
const InternalTreeSelect = ({
prefixCls: customizePrefixCls,
size: customizeSize,
disabled: customDisabled,
bordered = true,
className,
treeCheckable,
multiple,
listHeight = 256,
listItemHeight = 26,
placement,
notFoundContent,
switcherIcon,
treeLine,
getPopupContainer,
dropdownClassName,
popupClassName,
treeIcon = false,
transitionName,
choiceTransitionName = '',
status: customStatus,
showArrow,
treeExpandAction,
...props
}, ref) => {
const {
getPopupContainer: getContextPopupContainer,
getPrefixCls,
renderEmpty,
direction,
virtual,
dropdownMatchSelectWidth
} = React.useContext(_configProvider.ConfigContext);
const size = React.useContext(_SizeContext.default);
(0, _warning.default)(multiple !== false || !treeCheckable, 'TreeSelect', '`multiple` will always be `true` when `treeCheckable` is true');
(0, _warning.default)(!dropdownClassName, 'TreeSelect', '`dropdownClassName` is deprecated which will be removed in next major version. Please use `popupClassName` instead.');
const prefixCls = getPrefixCls('select', customizePrefixCls);
const treePrefixCls = getPrefixCls('select-tree', customizePrefixCls);
const treeSelectPrefixCls = getPrefixCls('tree-select', customizePrefixCls);
const {
compactSize,
compactItemClassnames
} = (0, _Compact.useCompactItemContext)(prefixCls, direction);
const mergedDropdownClassName = (0, _classnames.default)(popupClassName || dropdownClassName, `${treeSelectPrefixCls}-dropdown`, {
[`${treeSelectPrefixCls}-dropdown-rtl`]: direction === 'rtl'
});
const isMultiple = !!(treeCheckable || multiple);
const mergedShowArrow = showArrow !== undefined ? showArrow : props.loading || !isMultiple;
// ===================== Form =====================
const {
status: contextStatus,
hasFeedback,
isFormItemInput,
feedbackIcon
} = (0, React.useContext)(_context.FormItemInputContext);
const mergedStatus = (0, _statusUtils.getMergedStatus)(contextStatus, customStatus);
// ===================== Icons =====================
const {
suffixIcon,
removeIcon,
clearIcon
} = (0, _iconUtil.default)({
...props,
multiple: isMultiple,
showArrow: mergedShowArrow,
hasFeedback,
feedbackIcon,
prefixCls
});
// ===================== Empty =====================
let mergedNotFound;
if (notFoundContent !== undefined) {
mergedNotFound = notFoundContent;
} else {
mergedNotFound = (renderEmpty || _defaultRenderEmpty.default)('Select');
}
// ==================== Render =====================
const selectProps = (0, _omit.default)(props, ['suffixIcon', 'itemIcon', 'removeIcon', 'clearIcon', 'switcherIcon']);
// ===================== Placement =====================
const getPlacement = () => {
if (placement !== undefined) {
return placement;
}
return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';
};
const mergedSize = compactSize || customizeSize || size;
// ===================== Disabled =====================
const disabled = React.useContext(_DisabledContext.default);
const mergedDisabled = customDisabled ?? disabled;
const mergedClassName = (0, _classnames.default)(!customizePrefixCls && treeSelectPrefixCls, {
[`${prefixCls}-lg`]: mergedSize === 'large',
[`${prefixCls}-sm`]: mergedSize === 'small',
[`${prefixCls}-rtl`]: direction === 'rtl',
[`${prefixCls}-borderless`]: !bordered,
[`${prefixCls}-in-form-item`]: isFormItemInput
}, (0, _statusUtils.getStatusClassNames)(prefixCls, mergedStatus, hasFeedback), compactItemClassnames, className);
const rootPrefixCls = getPrefixCls();
return /*#__PURE__*/React.createElement(_rcTreeSelect.default, (0, _extends2.default)({
virtual: virtual,
dropdownMatchSelectWidth: dropdownMatchSelectWidth,
disabled: mergedDisabled
}, selectProps, {
ref: ref,
prefixCls: prefixCls,
className: mergedClassName,
listHeight: listHeight,
listItemHeight: listItemHeight,
treeCheckable: treeCheckable ? /*#__PURE__*/React.createElement("span", {
className: `${prefixCls}-tree-checkbox-inner`
}) : treeCheckable,
treeLine: !!treeLine,
inputIcon: suffixIcon,
multiple: multiple,
placement: getPlacement(),
removeIcon: removeIcon,
clearIcon: clearIcon,
switcherIcon: nodeProps => (0, _iconUtil2.default)(treePrefixCls, switcherIcon, treeLine, nodeProps),
showTreeIcon: treeIcon,
notFoundContent: mergedNotFound,
getPopupContainer: getPopupContainer || getContextPopupContainer,
treeMotion: null,
dropdownClassName: mergedDropdownClassName,
choiceTransitionName: (0, _motion.getTransitionName)(rootPrefixCls, '', choiceTransitionName),
transitionName: (0, _motion.getTransitionName)(rootPrefixCls, (0, _motion.getTransitionDirection)(placement), transitionName),
showArrow: hasFeedback || showArrow,
treeExpandAction: treeExpandAction
}));
};
const TreeSelectRef = /*#__PURE__*/React.forwardRef(InternalTreeSelect);
const TreeSelect = TreeSelectRef;
TreeSelect.TreeNode = _rcTreeSelect.TreeNode;
TreeSelect.SHOW_ALL = _rcTreeSelect.SHOW_ALL;
TreeSelect.SHOW_PARENT = _rcTreeSelect.SHOW_PARENT;
TreeSelect.SHOW_CHILD = _rcTreeSelect.SHOW_CHILD;
var _default = TreeSelect;
exports.default = _default;
;