UNPKG

vue-ant-patterns

Version:

vue-ant-patterns

227 lines (188 loc) 6.16 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _babelHelperVueJsxMergeProps = require('babel-helper-vue-jsx-merge-props'); var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _methods; var _vueTypes = require('ant-design-vue/lib/_util/vue-types'); var _vueTypes2 = _interopRequireDefault(_vueTypes); var _propsUtil = require('ant-design-vue/lib/_util/props-util'); var _LocaleReceiver = require('ant-design-vue/lib/locale-provider/LocaleReceiver'); var _LocaleReceiver2 = _interopRequireDefault(_LocaleReceiver); var _antDesignVue = require('ant-design-vue'); var _dIcon = require('../d-icon'); var _dIcon2 = _interopRequireDefault(_dIcon); var _debounce = require('debounce'); var _debounce2 = _interopRequireDefault(_debounce); var _zh_CN = require('../d-language/global/zh_CN'); var _zh_CN2 = _interopRequireDefault(_zh_CN); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var classSizeMp = { small: '-sm', large: '-lg', 'default': '' }; function fixControlledValue(value) { if (typeof value === 'undefined' || value === null) { return ''; } return value; } var QuickSearch = { name: 'DQuickSearch', props: { prefixCls: _vueTypes2['default'].string.def('depot-quick-search'), locale: _vueTypes2['default'].object, size: _vueTypes2['default'].oneOf(['small', 'large', 'default']).def('default'), defaultValue: [String, Number], value: [String, Number] }, created: function created() { this.debounceChange = (0, _debounce2['default'])(this.handlerChange, 300); this.debounceSearch = (0, _debounce2['default'])(this.handlerSearch, 400); }, data: function data() { var _$props = this.$props, value = _$props.value, defaultValue = _$props.defaultValue; return { showInput: false, stateValue: fixControlledValue(!(0, _propsUtil.hasProp)(this, 'value') ? defaultValue : value) // suffix: false, }; }, model: { prop: 'value', event: 'change.value' }, watch: { value: function value(val) { this.stateValue = fixControlledValue(val); } }, methods: (_methods = { getDefaultLocale: function getDefaultLocale() { var result = (0, _extends3['default'])({}, _zh_CN2['default'], this.locale); result.lang = (0, _extends3['default'])({}, result.lang, (this.locale || {}).lang); return result; }, open: function open() { if (this.showInput) { this.$emit('close'); } this.showInput = !this.showInput; }, close: function close() { this.showInput = false; this.$emit('close'); }, handlerChange: function handlerChange(e, val) { if (!(0, _propsUtil.hasProp)(this, 'value')) { this.stateValue = e.target.value; } else { this.$forceUpdate(); } if (!e.target.composing) { this.$emit('change.value', e.target.value); } this.$emit('change', e, val); this.$emit('input', e, val); }, handlerSearch: function handlerSearch(e, val) { this.$emit('search', e, val); }, emptyValue: function emptyValue(e) { this.stateValue = ''; this.$refs.autoref.stateValue = ''; this.$emit('clear'); this.$refs.autoref.focus(); } }, (0, _defineProperty3['default'])(_methods, 'close', function close() { this.showInput = false; }), (0, _defineProperty3['default'])(_methods, 'renderComponent', function renderComponent(contextLocale, locale) { var _this = this; var h = this.$createElement; var prefixCls = this.prefixCls, $listeners = this.$listeners, showInput = this.showInput, size = this.size, stateValue = this.stateValue, $slots = this.$slots; var buttonStr = showInput ? 'close' : 'search'; var props = { 'class': prefixCls }; var inputProps = { ref: 'autoref', 'class': 'quick-search-input', props: { placeholder: contextLocale.searchPlaceholder, suffix: stateValue ? h(_dIcon2['default'], { attrs: { type: 'close-circle', theme: 'filled' }, on: { 'click': this.emptyValue } }) : h('span'), size: size, defaultValue: stateValue // value: stateValue }, attrs: (0, _extends3['default'])({}, this.$attrs), on: (0, _extends3['default'])({}, $listeners, { change: function change(e) { var value = e.target.value; _this.debounceChange(e, value); }, pressEnter: function pressEnter(e) { var value = e.target.value; _this.debounceSearch(e, value); }, blur: function blur(e) { _this.$emit('blur', e); } }) }; var buttonProps = { props: { size: size }, key: 'quick-search-button', 'class': 'icon-button icon-button' + classSizeMp[size] }; var customRender = $slots.customRender; return h( 'span', props, [showInput ? customRender ? customRender : h(_antDesignVue.Input, inputProps) : null, h( _antDesignVue.Button, (0, _babelHelperVueJsxMergeProps2['default'])([buttonProps, { on: { 'click': this.open } }]), [h(_dIcon2['default'], { attrs: { type: buttonStr } })] )] ); }), _methods), render: function render() { var h = arguments[0]; return h(_LocaleReceiver2['default'], { attrs: { componentName: 'global', defaultLocale: this.getDefaultLocale }, scopedSlots: { 'default': this.renderComponent } }); } }; QuickSearch.install = function (Vue) { Vue.component(QuickSearch.name, QuickSearch); }; exports['default'] = QuickSearch;