ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
85 lines (84 loc) • 2.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fixControlledValue = fixControlledValue;
exports.hasAddon = hasAddon;
exports.hasPrefixSuffix = hasPrefixSuffix;
exports.resolveOnChange = resolveOnChange;
exports.triggerFocus = triggerFocus;
var _propsUtil = require("../../_util/props-util");
const isValid = value => {
return value !== undefined && value !== null && (Array.isArray(value) ? (0, _propsUtil.filterEmpty)(value).length : true);
};
function hasPrefixSuffix(propsAndSlots) {
return isValid(propsAndSlots.prefix) || isValid(propsAndSlots.suffix) || isValid(propsAndSlots.allowClear);
}
function hasAddon(propsAndSlots) {
return isValid(propsAndSlots.addonBefore) || isValid(propsAndSlots.addonAfter);
}
function fixControlledValue(value) {
if (typeof value === 'undefined' || value === null) {
return '';
}
return String(value);
}
function resolveOnChange(target, e, onChange, targetValue) {
if (!onChange) {
return;
}
const event = e;
if (e.type === 'click') {
Object.defineProperty(event, 'target', {
writable: true
});
Object.defineProperty(event, 'currentTarget', {
writable: true
});
// click clear icon
//event = Object.create(e);
const currentTarget = target.cloneNode(true);
event.target = currentTarget;
event.currentTarget = currentTarget;
// change target ref value cause e.target.value should be '' when clear input
currentTarget.value = '';
onChange(event);
return;
}
// Trigger by composition event, this means we need force change the input value
if (targetValue !== undefined) {
Object.defineProperty(event, 'target', {
writable: true
});
Object.defineProperty(event, 'currentTarget', {
writable: true
});
event.target = target;
event.currentTarget = target;
target.value = targetValue;
onChange(event);
return;
}
onChange(event);
}
function triggerFocus(element, option) {
if (!element) return;
element.focus(option);
// Selection content
const {
cursor
} = option || {};
if (cursor) {
const len = element.value.length;
switch (cursor) {
case 'start':
element.setSelectionRange(0, 0);
break;
case 'end':
element.setSelectionRange(len, len);
break;
default:
element.setSelectionRange(0, len);
}
}
}
;