UNPKG

zmp-ui

Version:

Zalo Mini App framework

88 lines (83 loc) 2.06 kB
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); } } }