UNPKG

tdesign-react

Version:
296 lines (288 loc) 13 kB
/** * tdesign v1.15.1 * (c) 2025 tdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var defineProperty = require('../_chunks/dep-0006fcfa.js'); var slicedToArray = require('../_chunks/dep-8e4d656d.js'); var React = require('react'); var tdesignIconsReact = require('tdesign-icons-react'); var classNames = require('classnames'); var hooks_useConfig = require('../hooks/useConfig.js'); var hooks_useControlled = require('../hooks/useControlled.js'); var hooks_useDefaultProps = require('../hooks/useDefaultProps.js'); var hooks_useDragSorter = require('../hooks/useDragSorter.js'); var hooks_useGlobalIcon = require('../hooks/useGlobalIcon.js'); var input_index = require('../input/index.js'); var tagInput_defaultProps = require('./defaultProps.js'); var tagInput_useHover = require('./useHover.js'); var tagInput_useTagList = require('./useTagList.js'); var tagInput_useTagScroll = require('./useTagScroll.js'); var isFunction = require('../_chunks/dep-ec8d2dca.js'); require('../_chunks/dep-667ac7af.js'); require('../_chunks/dep-00b49251.js'); require('../config-provider/ConfigContext.js'); require('../_chunks/dep-1df1dad8.js'); require('../_chunks/dep-5b5ab11b.js'); require('dayjs'); require('../_chunks/dep-f32c03f1.js'); require('../_chunks/dep-31c4bc3d.js'); require('../_chunks/dep-eea2872a.js'); require('../_chunks/dep-25585736.js'); require('../_chunks/dep-62e73936.js'); require('../_chunks/dep-64577888.js'); require('../_chunks/dep-71455db7.js'); require('../_chunks/dep-9e5a468d.js'); require('../_chunks/dep-f26edb7b.js'); require('../_chunks/dep-f33c1939.js'); require('../_chunks/dep-21ece627.js'); require('../_chunks/dep-25e4aa84.js'); require('../_chunks/dep-fc596d16.js'); require('../_chunks/dep-e1fbe1c3.js'); require('../_chunks/dep-df2b541f.js'); require('../_chunks/dep-edd366db.js'); require('../_chunks/dep-a56c4939.js'); require('../_chunks/dep-6c297e20.js'); require('../_chunks/dep-b7ad4d54.js'); require('../_chunks/dep-a2cb9299.js'); require('../_chunks/dep-f981815b.js'); require('../_util/noop.js'); require('../_chunks/dep-66114ce9.js'); require('../_chunks/dep-62d1dd66.js'); require('../_chunks/dep-7a148045.js'); require('../_chunks/dep-255ceed8.js'); require('../_chunks/dep-79629634.js'); require('../hooks/useEventCallback.js'); require('../input/Input.js'); require('../_chunks/dep-8fa3a4c2.js'); require('../hooks/useLayoutEffect.js'); require('../_chunks/dep-381fa848.js'); require('../_chunks/dep-4ed9eda4.js'); require('../_util/forwardRefWithStatics.js'); require('hoist-non-react-statics'); require('../input/InputGroup.js'); require('../locale/LocalReceiver.js'); require('../config-provider/ConfigProvider.js'); require('../_chunks/dep-ab2f63ec.js'); require('../_chunks/dep-a48c7e8b.js'); require('../_chunks/dep-3d4656ee.js'); require('../_chunks/dep-0ffc9d96.js'); require('../_chunks/dep-efe6d243.js'); require('../_chunks/dep-4b18243f.js'); require('../_chunks/dep-bff2c990.js'); require('../input/defaultProps.js'); require('../_util/parseTNode.js'); require('../_chunks/dep-59671c87.js'); require('../input/useLengthLimit.js'); require('../_chunks/dep-002fcc1e.js'); require('../_chunks/dep-e4e1901e.js'); require('../_chunks/dep-2ffa3ff1.js'); require('../tag/index.js'); require('../tag/Tag.js'); require('../_chunks/dep-4d5c26af.js'); require('../tag/defaultProps.js'); require('../tag/CheckTag.js'); require('../_chunks/dep-4406837c.js'); require('../tag/CheckTagGroup.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames); 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._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; } var TagInput = /*#__PURE__*/React.forwardRef(function (originalProps, ref) { var props = hooks_useDefaultProps["default"](originalProps, tagInput_defaultProps.tagInputDefaultProps); var _useConfig = hooks_useConfig["default"](), prefix = _useConfig.classPrefix; var _useGlobalIcon = hooks_useGlobalIcon["default"]({ CloseCircleFilledIcon: tdesignIconsReact.CloseCircleFilledIcon }), CloseCircleFilledIcon = _useGlobalIcon.CloseCircleFilledIcon; var excessTagsDisplayType = props.excessTagsDisplayType, autoWidth = props.autoWidth, borderless = props.borderless, readonly = props.readonly, disabled = props.disabled, clearable = props.clearable, placeholder = props.placeholder, valueDisplay = props.valueDisplay, label = props.label, inputProps = props.inputProps, size = props.size, tips = props.tips, status = props.status, suffixIcon = props.suffixIcon, suffix = props.suffix, prefixIcon = props.prefixIcon, maxRows = props.maxRows, onClick = props.onClick, onPaste = props.onPaste, _onFocus = props.onFocus, _onBlur = props.onBlur; var _useControlled = hooks_useControlled["default"](props, "inputValue", props.onInputChange), _useControlled2 = slicedToArray._slicedToArray(_useControlled, 2), tInputValue = _useControlled2[0], setTInputValue = _useControlled2[1]; var _useHover = tagInput_useHover["default"](props), isHover = _useHover.isHover, addHover = _useHover.addHover, cancelHover = _useHover.cancelHover; var _useDragSorter = hooks_useDragSorter["default"](_objectSpread(_objectSpread({}, props), {}, { sortOnDraggable: props.dragSort, onDragOverCheck: { x: true, targetClassNameRegExp: new RegExp("^".concat(prefix, "-tag")) } })), getDragProps = _useDragSorter.getDragProps; var isCompositionRef = React.useRef(false); var _useTagScroll = tagInput_useTagScroll["default"](props), scrollToRight = _useTagScroll.scrollToRight, onWheel = _useTagScroll.onWheel, scrollToRightOnEnter = _useTagScroll.scrollToRightOnEnter, scrollToLeftOnLeave = _useTagScroll.scrollToLeftOnLeave, tagInputRef = _useTagScroll.tagInputRef; var _useTagList = tagInput_useTagList["default"](_objectSpread(_objectSpread({}, props), {}, { getDragProps: getDragProps })), tagValue = _useTagList.tagValue, _onClose = _useTagList.onClose, onInnerEnter = _useTagList.onInnerEnter, onInputBackspaceKeyUp = _useTagList.onInputBackspaceKeyUp, clearAll = _useTagList.clearAll, renderLabel = _useTagList.renderLabel, onInputBackspaceKeyDown = _useTagList.onInputBackspaceKeyDown; var NAME_CLASS = "".concat(prefix, "-tag-input"); var WITH_SUFFIX_ICON_CLASS = "".concat(prefix, "-tag-input__with-suffix-icon"); var CLEAR_CLASS = "".concat(prefix, "-tag-input__suffix-clear"); var BREAK_LINE_CLASS = "".concat(prefix, "-tag-input--break-line"); var tagInputPlaceholder = !(tagValue !== null && tagValue !== void 0 && tagValue.length) ? placeholder : ""; var showClearIcon = Boolean(!readonly && !disabled && clearable && isHover && (tagValue === null || tagValue === void 0 ? void 0 : tagValue.length)); React.useImperativeHandle(ref, function () { return _objectSpread({}, tagInputRef.current || {}); }); var onInputCompositionstart = function onInputCompositionstart(value, context) { var _inputProps$onComposi; isCompositionRef.current = true; inputProps === null || inputProps === void 0 || (_inputProps$onComposi = inputProps.onCompositionstart) === null || _inputProps$onComposi === void 0 || _inputProps$onComposi.call(inputProps, value, context); }; var onInputCompositionend = function onInputCompositionend(value, context) { var _inputProps$onComposi2; isCompositionRef.current = false; inputProps === null || inputProps === void 0 || (_inputProps$onComposi2 = inputProps.onCompositionend) === null || _inputProps$onComposi2 === void 0 || _inputProps$onComposi2.call(inputProps, value, context); }; var onInputEnter = function onInputEnter(value, context) { setTInputValue("", { e: context.e, trigger: "enter" }); !isCompositionRef.current && onInnerEnter(value, context); scrollToRight(); }; var onInnerClick = function onInnerClick(context) { if (!props.disabled && !props.readonly) { var _tagInputRef$current, _tagInputRef$current$; (_tagInputRef$current = tagInputRef.current) === null || _tagInputRef$current === void 0 || (_tagInputRef$current = _tagInputRef$current.inputElement) === null || _tagInputRef$current === void 0 || (_tagInputRef$current$ = _tagInputRef$current.focus) === null || _tagInputRef$current$ === void 0 || _tagInputRef$current$.call(_tagInputRef$current); } onClick === null || onClick === void 0 || onClick(context); }; var onClearClick = function onClearClick(e) { var _props$onClear; clearAll({ e: e }); setTInputValue("", { e: e, trigger: "clear" }); (_props$onClear = props.onClear) === null || _props$onClear === void 0 || _props$onClear.call(props, { e: e }); }; var suffixIconNode = showClearIcon ? /* @__PURE__ */React__default["default"].createElement(CloseCircleFilledIcon, { className: CLEAR_CLASS, onClick: onClearClick }) : suffixIcon; var displayNode = React.useMemo(function () { return isFunction.isFunction(valueDisplay) ? valueDisplay({ value: tagValue, onClose: function onClose(index) { return _onClose({ index: index }); } }) : valueDisplay; }, [valueDisplay]); var isEmpty = !(Array.isArray(tagValue) && tagValue.length); var classes = [NAME_CLASS, defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty(defineProperty._defineProperty({}, BREAK_LINE_CLASS, excessTagsDisplayType === "break-line"), WITH_SUFFIX_ICON_CLASS, !!suffixIconNode), "".concat(prefix, "-is-empty"), isEmpty), "".concat(prefix, "-tag-input--with-tag"), !isEmpty), "".concat(prefix, "-tag-input--max-rows"), excessTagsDisplayType === "break-line" && maxRows), "".concat(prefix, "-tag-input--drag-sort"), props.dragSort && !disabled && !readonly), props.className]; var maxRowsStyle = maxRows ? { "--max-rows": maxRows, "--tag-input-size": size } : {}; return /* @__PURE__ */React__default["default"].createElement(input_index.Input, _objectSpread({ ref: tagInputRef, value: tInputValue, onChange: function onChange(val, context) { setTInputValue(val, _objectSpread(_objectSpread({}, context), {}, { trigger: "input" })); }, autoWidth: true, onWheel: onWheel, size: size, borderless: borderless, readonly: readonly, disabled: disabled, label: renderLabel({ displayNode: displayNode, label: label }), className: classNames__default["default"](classes), style: _objectSpread(_objectSpread({}, props.style), maxRowsStyle), tips: tips, status: status, placeholder: tagInputPlaceholder, suffix: suffix, prefixIcon: prefixIcon, suffixIcon: suffixIconNode, showInput: !(inputProps !== null && inputProps !== void 0 && inputProps.readonly) || !tagValue || !(tagValue !== null && tagValue !== void 0 && tagValue.length), keepWrapperWidth: !autoWidth, onPaste: onPaste, onClick: onInnerClick, onEnter: onInputEnter, onKeydown: onInputBackspaceKeyDown, onKeyup: onInputBackspaceKeyUp, onMouseenter: function onMouseenter(context) { addHover(context); scrollToRightOnEnter(); }, onMouseleave: function onMouseleave(context) { cancelHover(context); scrollToLeftOnLeave(); }, onFocus: function onFocus(inputValue, context) { _onFocus === null || _onFocus === void 0 || _onFocus(tagValue, { e: context.e, inputValue: inputValue }); }, onBlur: function onBlur(inputValue, context) { if (tInputValue) { setTInputValue("", { e: context.e, trigger: "blur" }); } _onBlur === null || _onBlur === void 0 || _onBlur(tagValue, { e: context.e, inputValue: "" }); }, onCompositionstart: onInputCompositionstart, onCompositionend: onInputCompositionend }, inputProps)); }); TagInput.displayName = "TagInput"; exports["default"] = TagInput; //# sourceMappingURL=TagInput.js.map