UNPKG

@talend/react-components

Version:
103 lines (102 loc) 3.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _propTypes = _interopRequireDefault(require("prop-types")); var _Context = require("../Context"); var _dateExtraction = require("../date-extraction"); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function ContextualManager(props) { function getDateOptions() { return { dateFormat: props.dateFormat, useUTC: props.useUTC, required: props.required, timezone: props.timezone }; } const initialState = (0, _dateExtraction.extractDate)(props.value, getDateOptions()); const [state, setState] = (0, _react.useState)(initialState); (0, _react.useEffect)(() => { if (props.value !== state.date) { const newState = (0, _dateExtraction.extractDate)(props.value, getDateOptions()); setState(newState); } }, [props.value]); (0, _react.useEffect)(() => { (0, _dateExtraction.checkSupportedDateFormat)(props.dateFormat); }, [props.dateFormat]); (0, _react.useEffect)(() => { if (props.timezone) { (0, _dateExtraction.checkSupportedTimezone)(props.timezone); } }, [props.timezone]); function onChange(event, origin, nextState) { if (!props.onChange) { return; } const { errorMessage, date, textInput, errors } = nextState; props.onChange(event, { errors, errorMessage, date, textInput, origin }); } function onInputChange(event) { const textInput = event.target.value; const nextState = (0, _dateExtraction.extractPartsFromTextInput)(textInput, getDateOptions(), props.isDisabledChecker); setState(nextState); onChange(event, 'INPUT', nextState); } function onPickerChange(event, { date }) { const nextState = (0, _dateExtraction.extractFromDate)(date, getDateOptions()); setState(nextState); onChange(event, 'PICKER', nextState); } return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Context.DateContext.Provider, { value: { value: { textInput: state.textInput, date: state.localDate }, inputManagement: { onChange: onInputChange, placeholder: props.dateFormat }, pickerManagement: { onSubmit: onPickerChange, useUTC: props.useUTC } }, children: props.children }); } ContextualManager.propTypes = { children: _propTypes.default.node, dateFormat: _propTypes.default.string, onChange: _propTypes.default.func, required: _propTypes.default.bool, timezone: _propTypes.default.string, useUTC: _propTypes.default.bool, value: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]), isDisabledChecker: _propTypes.default.func }; ContextualManager.defaultProps = { dateFormat: 'YYYY-MM-DD', useUTC: false }; ContextualManager.displayName = 'Date.Manager'; var _default = exports.default = ContextualManager; //# sourceMappingURL=Manager.component.js.map