zmp-ui
Version:
Zalo Mini App framework
88 lines (83 loc) • 2.06 kB
JavaScript
export function hasAddon(props) {
return !!(props.addonBefore || props.addonAfter);
}
export function hasPrefixSuffix(props) {
return !!(props.prefix || props.suffix || props.allowClear);
}
export function hasAllowClear(props) {
return !!props.allowClear;
}
export function fixControlledValue(value) {
if (typeof value === "undefined" || value === null) {
return "";
}
return String(value);
}
export function resolveOnChange(target, e, onChange, targetValue) {
if (!onChange) {
return;
}
var event = e;
if (e.type === "click") {
// Clone a new target for event.
// Avoid the following usage, the setQuery method gets the original value.
//
// const [query, setQuery] = React.useState('');
// <Input
// allowClear
// value={query}
// onChange={(e)=> {
// setQuery((prevStatus) => e.target.value);
// }}
// />
var currentTarget = target.cloneNode(true);
// click clear icon
event = Object.create(e, {
target: {
value: currentTarget
},
currentTarget: {
value: currentTarget
}
});
currentTarget.value = "";
onChange(event);
return;
}
// Trigger by composition event, this means we need force change the input value
if (targetValue !== undefined) {
event = Object.create(e, {
target: {
value: target
},
currentTarget: {
value: target
}
});
// eslint-disable-next-line no-param-reassign
target.value = targetValue;
onChange(event);
return;
}
onChange(event);
}
export function triggerFocus(element, option) {
if (!element) return;
element.focus(option);
// Selection content
var _ref = option || {},
cursor = _ref.cursor;
if (cursor) {
var 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);
}
}
}