@geneui/components
Version:
The Gene UI components library designed for BI tools
99 lines (95 loc) • 3.14 kB
JavaScript
import { _ as _extends } from '../_rollupPluginBabelHelpers-e8fb2e5c.js';
import React__default, { forwardRef, useState, useCallback, useEffect } from 'react';
import PropTypes from 'prop-types';
import useMount from '../hooks/useMount.js';
import '../configs-00612ce0.js';
import Uploader from '../Uploader/index.js';
import '../index-a0e4e333.js';
import '../dateValidation-67caec66.js';
import '../_commonjsHelpers-24198af3.js';
import 'react-dom';
import '../index-031ff73c.js';
import '../Button/index.js';
import '../tslib.es6-f211516f.js';
import '../Icon/index.js';
import '../style-inject.es-746bb8ed.js';
import '../ExtendedInput/index.js';
import '../hooks/useDeviceType.js';
import '../hooks/useWindowSize.js';
import '../hooks/useDebounce.js';
import '../useEllipsisDetection-4d997d5d.js';
import '../SuggestionList/index.js';
import '../hooks/useKeyDown.js';
import '../hooks/useClickOutside.js';
import '../config-1053d64d.js';
import '../Scrollbar/index.js';
import '../callAfterDelay-7272faca.js';
import '../index-6d7e99cd.js';
import '../GeneUIProvider/index.js';
import '../Grid/index.js';
import '../hooks/useWidth.js';
import '../hooks/useImgDownload.js';
import '../BusyLoader/index.js';
import '../Image/index.js';
import '../Empty/index.js';
import '../Checkbox/index.js';
import '../checkboxRadioSwitcher-5b69d7bd.js';
import '../guid-8ddf77b3.js';
function checkValidation(required, isValid) {
let value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
if (isValid === false) return {
key: 'customValidation',
isValid: false
};
if (required && value.length === 0) return {
key: 'required',
isValid: false
};
return {
key: null,
isValid: true
};
}
const UploaderField = /*#__PURE__*/forwardRef((_ref, ref) => {
let {
customValidation,
onChange,
required,
forceAllowValidation,
isValid,
value,
defaultValue,
...restProps
} = _ref;
const [validationState, setValidationState] = useState(true);
const [allowValidation, setAllowValidation] = useState(false);
const validate = useCallback(defaultValue => checkValidation(required, isValid, value || defaultValue).isValid, [value, required, isValid, defaultValue]);
const handleChange = useCallback(e => {
const {
value
} = e;
const isValid = checkValidation(required, isValid, value);
setValidationState(isValid);
onChange && onChange(e, isValid);
}, [onChange, isValid, required, customValidation]);
// set Allow validation true if submit button clicked
useEffect(() => {
forceAllowValidation && setAllowValidation(true);
}, [forceAllowValidation]);
useMount(() => setValidationState(validate(defaultValue)));
return /*#__PURE__*/React__default.createElement(Uploader, _extends({
ref: ref,
isValid: !allowValidation || validationState,
onChange: handleChange,
required: required
}, restProps));
});
UploaderField.propTypes = {
onChange: PropTypes.func,
customValidation: PropTypes.func,
/**
* Additional validation state
*/
isValid: PropTypes.bool
};
export { UploaderField as default };