UNPKG

@geneui/components

Version:

The Gene UI components library designed for BI tools

99 lines (95 loc) 3.14 kB
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 };