@talend/react-components
Version:
Set of react components.
80 lines • 2.85 kB
JavaScript
import { useContext } from 'react';
import PropTypes from 'prop-types';
import { withTranslation } from 'react-i18next';
import I18N_DOMAIN_COMPONENTS from '../../../../constants';
import getDefaultT from '../../../../translate';
import { INPUT_ERRORS, HOUR_ERRORS, MINUTES_ERRORS, SECONDS_ERRORS } from '../constants';
import { DateTimeContext } from '../Context';
import Error from './Error.component';
import theme from './Validation.module.scss';
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
function Validation({
t
}) {
const {
errorManagement,
formManagement
} = useContext(DateTimeContext);
const {
errors,
focusedInput,
hoursErrorId,
minutesErrorId,
secondsErrorId,
inputErrorId
} = errorManagement;
const errorsOrder = [inputErrorId, hoursErrorId, minutesErrorId, secondsErrorId];
const errorsMapping = {
[inputErrorId]: errors.filter(error => INPUT_ERRORS.includes(error.code)),
[hoursErrorId]: errors.filter(error => HOUR_ERRORS.includes(error.code)),
[minutesErrorId]: errors.filter(error => MINUTES_ERRORS.includes(error.code)),
[secondsErrorId]: errors.filter(error => SECONDS_ERRORS.includes(error.code))
};
let visibleErrors = focusedInput;
if (!visibleErrors) {
visibleErrors = errorsOrder.find(part => errorsMapping[part].length);
}
return /*#__PURE__*/_jsxs("div", {
className: theme.validation,
children: [/*#__PURE__*/_jsxs("div", {
className: theme.errors,
children: [/*#__PURE__*/_jsx(Error, {
id: inputErrorId,
errors: errorsMapping[inputErrorId],
hidden: visibleErrors !== inputErrorId
}, "input-errors"), /*#__PURE__*/_jsx(Error, {
id: hoursErrorId,
errors: errorsMapping[hoursErrorId],
hidden: visibleErrors !== hoursErrorId
}, "hours-errors"), /*#__PURE__*/_jsx(Error, {
id: minutesErrorId,
errors: errorsMapping[minutesErrorId],
hidden: visibleErrors !== minutesErrorId
}, "minutes-errors"), /*#__PURE__*/_jsx(Error, {
id: secondsErrorId,
errors: errorsMapping[secondsErrorId],
hidden: visibleErrors !== secondsErrorId
}, "seconds-errors")]
}), /*#__PURE__*/_jsx("button", {
name: "action-datepicker-validate",
className: "btn btn-primary",
type: "button",
"aria-label": t('DATEPICKER_VALIDATE_DESC', {
defaultValue: 'Validate date value'
}),
onClick: formManagement.onSubmit,
children: t('DATEPICKER_VALIDATE', {
defaultValue: 'Done'
})
})]
});
}
Validation.displayName = 'DateTime.Validation';
Validation.propTypes = {
t: PropTypes.func
};
Validation.defaultProps = {
t: getDefaultT()
};
export default withTranslation(I18N_DOMAIN_COMPONENTS)(Validation);
//# sourceMappingURL=Validation.component.js.map