Search.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _vue = require("vue");
  8. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  9. var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
  10. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  11. var _classNames2 = _interopRequireDefault(require("../_util/classNames"));
  12. var _Input = _interopRequireDefault(require("./Input"));
  13. var _SearchOutlined = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/SearchOutlined"));
  14. var _inputProps = _interopRequireDefault(require("./inputProps"));
  15. var _button = _interopRequireDefault(require("../button"));
  16. var _vnode = require("../_util/vnode");
  17. var _vueTypes = _interopRequireDefault(require("../_util/vue-types"));
  18. var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
  19. var _useConfigInject2 = _interopRequireDefault(require("../_util/hooks/useConfigInject"));
  20. var _omit = _interopRequireDefault(require("../_util/omit"));
  21. var _isMobile = _interopRequireDefault(require("../_util/isMobile"));
  22. var _excluded = ["disabled", "loading", "addonAfter", "suffix"];
  23. var _default2 = (0, _vue.defineComponent)({
  24. compatConfig: {
  25. MODE: 3
  26. },
  27. name: 'AInputSearch',
  28. inheritAttrs: false,
  29. props: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _inputProps.default)()), {}, {
  30. inputPrefixCls: String,
  31. // 不能设置默认值 https://github.com/vueComponent/ant-design-vue/issues/1916
  32. enterButton: _vueTypes.default.any,
  33. onSearch: {
  34. type: Function
  35. }
  36. }),
  37. setup: function setup(props, _ref) {
  38. var slots = _ref.slots,
  39. attrs = _ref.attrs,
  40. expose = _ref.expose,
  41. emit = _ref.emit;
  42. var inputRef = (0, _vue.ref)();
  43. var focus = function focus() {
  44. var _inputRef$value;
  45. (_inputRef$value = inputRef.value) === null || _inputRef$value === void 0 ? void 0 : _inputRef$value.focus();
  46. };
  47. var blur = function blur() {
  48. var _inputRef$value2;
  49. (_inputRef$value2 = inputRef.value) === null || _inputRef$value2 === void 0 ? void 0 : _inputRef$value2.blur();
  50. };
  51. expose({
  52. focus: focus,
  53. blur: blur
  54. });
  55. var onChange = function onChange(e) {
  56. emit('update:value', e.target.value);
  57. if (e && e.target && e.type === 'click') {
  58. emit('search', e.target.value, e);
  59. }
  60. emit('change', e);
  61. };
  62. var onMousedown = function onMousedown(e) {
  63. var _inputRef$value3;
  64. if (document.activeElement === ((_inputRef$value3 = inputRef.value) === null || _inputRef$value3 === void 0 ? void 0 : _inputRef$value3.input)) {
  65. e.preventDefault();
  66. }
  67. };
  68. var onSearch = function onSearch(e) {
  69. var _inputRef$value4;
  70. emit('search', (_inputRef$value4 = inputRef.value) === null || _inputRef$value4 === void 0 ? void 0 : _inputRef$value4.stateValue, e);
  71. if (!_isMobile.default.tablet) {
  72. inputRef.value.focus();
  73. }
  74. };
  75. var _useConfigInject = (0, _useConfigInject2.default)('input-search', props),
  76. prefixCls = _useConfigInject.prefixCls,
  77. getPrefixCls = _useConfigInject.getPrefixCls,
  78. direction = _useConfigInject.direction,
  79. size = _useConfigInject.size;
  80. var inputPrefixCls = (0, _vue.computed)(function () {
  81. return getPrefixCls('input', props.inputPrefixCls);
  82. });
  83. return function () {
  84. var _slots$addonAfter, _slots$suffix, _slots$enterButton, _slots$enterButton2, _classNames;
  85. var disabled = props.disabled,
  86. loading = props.loading,
  87. _props$addonAfter = props.addonAfter,
  88. addonAfter = _props$addonAfter === void 0 ? (_slots$addonAfter = slots.addonAfter) === null || _slots$addonAfter === void 0 ? void 0 : _slots$addonAfter.call(slots) : _props$addonAfter,
  89. _props$suffix = props.suffix,
  90. suffix = _props$suffix === void 0 ? (_slots$suffix = slots.suffix) === null || _slots$suffix === void 0 ? void 0 : _slots$suffix.call(slots) : _props$suffix,
  91. restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
  92. var _props$enterButton = props.enterButton,
  93. enterButton = _props$enterButton === void 0 ? (_slots$enterButton = (_slots$enterButton2 = slots.enterButton) === null || _slots$enterButton2 === void 0 ? void 0 : _slots$enterButton2.call(slots)) !== null && _slots$enterButton !== void 0 ? _slots$enterButton : false : _props$enterButton;
  94. enterButton = enterButton || enterButton === '';
  95. var searchIcon = typeof enterButton === 'boolean' ? (0, _vue.createVNode)(_SearchOutlined.default, null, null) : null;
  96. var btnClassName = "".concat(prefixCls.value, "-button");
  97. var enterButtonAsElement = Array.isArray(enterButton) ? enterButton[0] : enterButton;
  98. var button;
  99. var isAntdButton = enterButtonAsElement.type && (0, _isPlainObject.default)(enterButtonAsElement.type) && enterButtonAsElement.type.__ANT_BUTTON;
  100. if (isAntdButton || enterButtonAsElement.tagName === 'button') {
  101. button = (0, _vnode.cloneElement)(enterButtonAsElement, (0, _objectSpread2.default)({
  102. onMousedown: onMousedown,
  103. onClick: onSearch,
  104. key: 'enterButton'
  105. }, isAntdButton ? {
  106. class: btnClassName,
  107. size: size.value
  108. } : {}), false);
  109. } else {
  110. var iconOnly = searchIcon && !enterButton;
  111. button = (0, _vue.createVNode)(_button.default, {
  112. "class": btnClassName,
  113. "type": enterButton ? 'primary' : undefined,
  114. "size": size.value,
  115. "disabled": disabled,
  116. "key": "enterButton",
  117. "onMousedown": onMousedown,
  118. "onClick": onSearch,
  119. "loading": loading,
  120. "icon": iconOnly ? searchIcon : null
  121. }, {
  122. default: function _default() {
  123. return [iconOnly ? null : searchIcon || enterButton];
  124. }
  125. });
  126. }
  127. if (addonAfter) {
  128. button = [button, addonAfter];
  129. }
  130. var cls = (0, _classNames2.default)(prefixCls.value, (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(prefixCls.value, "-rtl"), direction.value === 'rtl'), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls.value, "-").concat(size.value), !!size.value), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls.value, "-with-button"), !!enterButton), _classNames), attrs.class);
  131. return (0, _vue.createVNode)(_Input.default, (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({
  132. "ref": inputRef
  133. }, (0, _omit.default)(restProps, ['onUpdate:value', 'onSearch', 'enterButton'])), attrs), {}, {
  134. "onPressEnter": onSearch,
  135. "size": size.value,
  136. "prefixCls": inputPrefixCls.value,
  137. "addonAfter": button,
  138. "suffix": suffix,
  139. "onChange": onChange,
  140. "class": cls,
  141. "disabled": disabled
  142. }), slots);
  143. };
  144. }
  145. });
  146. exports.default = _default2;