ant-design-vue/components/auto-complete/InputElement.jsx

60 lines
1.8 KiB
Vue

import { cloneElement } from '../_util/vnode';
import { flattenChildren } from '../_util/props-util';
// function chaining(...fns) {
// return function(...args) {
// // eslint-disable-line
// // eslint-disable-line
// for (let i = 0; i < fns.length; i++) {
// if (fns[i] && typeof fns[i] === 'function') {
// fns[i].apply(this, args);
// }
// }
// };
// }
// export default {
// name: 'InputElement',
// inheritAttrs: false,
// props: {
// value: PropTypes.any,
// disabled: PropTypes.bool,
// placeholder: PropTypes.string,
// },
// render() {
// const { $slots = {}, $attrs = {}, placeholder } = this;
// const listeners = getListeners(this);
// const props = getOptionProps(this);
// const value = props.value === undefined ? '' : props.value;
// const children = getSlot(this)[0];
// const { componentOptions = {} } = $slots.default[0];
// const { listeners: events = {} } = componentOptions;
// const newEvent = { ...events };
// for (const [eventName, event] of Object.entries(listeners)) {
// newEvent[eventName] = chaining(event, events[eventName]);
// }
// const attrs = { ...$attrs, value };
// // https://github.com/vueComponent/ant-design-vue/issues/1761
// delete props.placeholder;
// if (placeholder) {
// props.placeholder = placeholder;
// attrs.placeholder = placeholder;
// }
// return cloneElement(children, {
// domProps: {
// value,
// },
// props,
// on: newEvent,
// attrs,
// ref: 'ele',
// });
// },
// };
const InputElement = (_, { attrs, slots }) => {
const children = flattenChildren(slots.default?.())[0];
return cloneElement(children, { ...attrs });
};
InputElement.inheritAttrs = false;
export default InputElement;